Full Code of zebulon2/rtl8814au for AI

master 741fa1fb07fa cached
429 files
11.2 MB
2.9M tokens
8473 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,773K chars total). Download the full file to get everything.
Repository: zebulon2/rtl8814au
Branch: master
Commit: 741fa1fb07fa
Files: 429
Total size: 11.2 MB

Directory structure:
gitextract_bsjayzui/

├── .gitignore
├── Kconfig
├── LICENSE
├── Makefile
├── README.md
├── clean
├── core/
│   ├── efuse/
│   │   └── rtw_efuse.c
│   ├── rtw_ap.c
│   ├── rtw_beamforming.c
│   ├── rtw_br_ext.c
│   ├── rtw_bt_mp.c
│   ├── rtw_btcoex.c
│   ├── rtw_cmd.c
│   ├── rtw_debug.c
│   ├── rtw_eeprom.c
│   ├── rtw_ieee80211.c
│   ├── rtw_io.c
│   ├── rtw_ioctl_query.c
│   ├── rtw_ioctl_rtl.c
│   ├── rtw_ioctl_set.c
│   ├── rtw_iol.c
│   ├── rtw_mem.c
│   ├── rtw_mlme.c
│   ├── rtw_mlme_ext.c
│   ├── rtw_mp.c
│   ├── rtw_mp_ioctl.c
│   ├── rtw_odm.c
│   ├── rtw_p2p.c
│   ├── rtw_pwrctrl.c
│   ├── rtw_recv.c
│   ├── rtw_rf.c
│   ├── rtw_security.c
│   ├── rtw_sreset.c
│   ├── rtw_sta_mgt.c
│   ├── rtw_tdls.c
│   ├── rtw_vht.c
│   ├── rtw_wapi.c
│   ├── rtw_wapi_sms4.c
│   ├── rtw_wlan_util.c
│   └── rtw_xmit.c
├── dkms.conf
├── hal/
│   ├── HalPwrSeqCmd.c
│   ├── btc/
│   │   ├── HalBtc8188c2Ant.c
│   │   ├── HalBtc8188c2Ant.h
│   │   ├── HalBtc8192d2Ant.c
│   │   ├── HalBtc8192d2Ant.h
│   │   ├── HalBtc8192e1Ant.c
│   │   ├── HalBtc8192e1Ant.h
│   │   ├── HalBtc8192e2Ant.c
│   │   ├── HalBtc8192e2Ant.h
│   │   ├── HalBtc8703b1Ant.c
│   │   ├── HalBtc8703b1Ant.h
│   │   ├── HalBtc8703b2Ant.c
│   │   ├── HalBtc8703b2Ant.h
│   │   ├── HalBtc8723a1Ant.c
│   │   ├── HalBtc8723a1Ant.h
│   │   ├── HalBtc8723a2Ant.c
│   │   ├── HalBtc8723a2Ant.h
│   │   ├── HalBtc8723b1Ant.c
│   │   ├── HalBtc8723b1Ant.h
│   │   ├── HalBtc8723b2Ant.c
│   │   ├── HalBtc8723b2Ant.h
│   │   ├── HalBtc8812a1Ant.c
│   │   ├── HalBtc8812a1Ant.h
│   │   ├── HalBtc8812a2Ant.c
│   │   ├── HalBtc8812a2Ant.h
│   │   ├── HalBtc8821a1Ant.c
│   │   ├── HalBtc8821a1Ant.h
│   │   ├── HalBtc8821a2Ant.c
│   │   ├── HalBtc8821a2Ant.h
│   │   ├── HalBtc8821aCsr2Ant.c
│   │   ├── HalBtc8821aCsr2Ant.h
│   │   ├── HalBtcOutSrc.h
│   │   └── Mp_Precomp.h
│   ├── efuse/
│   │   ├── efuse_mask.h
│   │   └── rtl8814a/
│   │       ├── HalEfuseMask8814A_PCIE.c
│   │       ├── HalEfuseMask8814A_PCIE.h
│   │       ├── HalEfuseMask8814A_USB.c
│   │       └── HalEfuseMask8814A_USB.h
│   ├── hal_btcoex.c
│   ├── hal_com.c
│   ├── hal_com_c2h.h
│   ├── hal_com_phycfg.c
│   ├── hal_dm.c
│   ├── hal_dm.h
│   ├── hal_hci/
│   │   └── hal_usb.c
│   ├── hal_intf.c
│   ├── hal_mp.c
│   ├── hal_phy.c
│   ├── led/
│   │   └── hal_usb_led.c
│   ├── phydm/
│   │   ├── halhwimg.h
│   │   ├── halphyrf_ap.c
│   │   ├── halphyrf_ap.h
│   │   ├── halphyrf_ce.c
│   │   ├── halphyrf_ce.h
│   │   ├── halphyrf_win.c
│   │   ├── halphyrf_win.h
│   │   ├── mp_precomp.h
│   │   ├── phydm.c
│   │   ├── phydm.h
│   │   ├── phydm_acs.c
│   │   ├── phydm_acs.h
│   │   ├── phydm_adaptivity.c
│   │   ├── phydm_adaptivity.h
│   │   ├── phydm_antdect.c
│   │   ├── phydm_antdect.h
│   │   ├── phydm_antdiv.c
│   │   ├── phydm_antdiv.h
│   │   ├── phydm_beamforming.c
│   │   ├── phydm_beamforming.h
│   │   ├── phydm_cfotracking.c
│   │   ├── phydm_cfotracking.h
│   │   ├── phydm_debug.c
│   │   ├── phydm_debug.h
│   │   ├── phydm_dig.c
│   │   ├── phydm_dig.h
│   │   ├── phydm_dynamicbbpowersaving.c
│   │   ├── phydm_dynamicbbpowersaving.h
│   │   ├── phydm_dynamictxpower.c
│   │   ├── phydm_dynamictxpower.h
│   │   ├── phydm_edcaturbocheck.c
│   │   ├── phydm_edcaturbocheck.h
│   │   ├── phydm_hwconfig.c
│   │   ├── phydm_hwconfig.h
│   │   ├── phydm_interface.c
│   │   ├── phydm_interface.h
│   │   ├── phydm_noisemonitor.c
│   │   ├── phydm_noisemonitor.h
│   │   ├── phydm_pathdiv.c
│   │   ├── phydm_pathdiv.h
│   │   ├── phydm_powertracking_ap.c
│   │   ├── phydm_powertracking_ap.h
│   │   ├── phydm_powertracking_ce.c
│   │   ├── phydm_powertracking_ce.h
│   │   ├── phydm_powertracking_win.c
│   │   ├── phydm_powertracking_win.h
│   │   ├── phydm_pre_define.h
│   │   ├── phydm_precomp.h
│   │   ├── phydm_rainfo.c
│   │   ├── phydm_rainfo.h
│   │   ├── phydm_reg.h
│   │   ├── phydm_regdefine11ac.h
│   │   ├── phydm_regdefine11n.h
│   │   ├── phydm_rxhp.c
│   │   ├── phydm_rxhp.h
│   │   ├── phydm_types.h
│   │   ├── rtchnlplan.c
│   │   ├── rtchnlplan.h
│   │   ├── rtl8814a/
│   │   │   ├── hal8814areg_odm.h
│   │   │   ├── halhwimg8814a_bb.c
│   │   │   ├── halhwimg8814a_bb.h
│   │   │   ├── halhwimg8814a_fw.c
│   │   │   ├── halhwimg8814a_fw.h
│   │   │   ├── halhwimg8814a_mac.c
│   │   │   ├── halhwimg8814a_mac.h
│   │   │   ├── halhwimg8814a_rf.c
│   │   │   ├── halhwimg8814a_rf.h
│   │   │   ├── halphyrf_8814a_ap.c
│   │   │   ├── halphyrf_8814a_ap.h
│   │   │   ├── halphyrf_8814a_ce.c
│   │   │   ├── halphyrf_8814a_ce.h
│   │   │   ├── halphyrf_8814a_win.c
│   │   │   ├── halphyrf_8814a_win.h
│   │   │   ├── phydm_iqk_8814a.c
│   │   │   ├── phydm_iqk_8814a.h
│   │   │   ├── phydm_regconfig8814a.c
│   │   │   ├── phydm_regconfig8814a.h
│   │   │   ├── phydm_rtl8814a.c
│   │   │   ├── phydm_rtl8814a.h
│   │   │   └── version_rtl8814a.h
│   │   └── txbf/
│   │       ├── halcomtxbf.c
│   │       ├── halcomtxbf.h
│   │       ├── haltxbf8192e.c
│   │       ├── haltxbf8192e.h
│   │       ├── haltxbf8814a.c
│   │       ├── haltxbf8814a.h
│   │       ├── haltxbf8821b.c
│   │       ├── haltxbf8821b.h
│   │       ├── haltxbf8822b.c
│   │       ├── haltxbf8822b.h
│   │       ├── haltxbfinterface.c
│   │       ├── haltxbfinterface.h
│   │       ├── haltxbfjaguar.c
│   │       └── haltxbfjaguar.h
│   └── rtl8814a/
│       ├── Hal8814PwrSeq.c
│       ├── rtl8814a_cmd.c
│       ├── rtl8814a_dm.c
│       ├── rtl8814a_hal_init.c
│       ├── rtl8814a_phycfg.c
│       ├── rtl8814a_rf6052.c
│       ├── rtl8814a_rxdesc.c
│       ├── rtl8814a_sreset.c
│       ├── rtl8814a_xmit.c
│       └── usb/
│           ├── rtl8814au_led.c
│           ├── rtl8814au_recv.c
│           ├── rtl8814au_xmit.c
│           ├── usb_halinit.c
│           └── usb_ops_linux.c
├── ifcfg-wlan0
├── include/
│   ├── Hal8188EPhyCfg.h
│   ├── Hal8188EPhyReg.h
│   ├── Hal8188EPwrSeq.h
│   ├── Hal8188FPhyCfg.h
│   ├── Hal8188FPhyReg.h
│   ├── Hal8188FPwrSeq.h
│   ├── Hal8192EPhyCfg.h
│   ├── Hal8192EPhyReg.h
│   ├── Hal8192EPwrSeq.h
│   ├── Hal8703BPhyCfg.h
│   ├── Hal8703BPhyReg.h
│   ├── Hal8703BPwrSeq.h
│   ├── Hal8723BPhyCfg.h
│   ├── Hal8723BPhyReg.h
│   ├── Hal8723BPwrSeq.h
│   ├── Hal8723PwrSeq.h
│   ├── Hal8812PhyCfg.h
│   ├── Hal8812PhyReg.h
│   ├── Hal8812PwrSeq.h
│   ├── Hal8814PhyCfg.h
│   ├── Hal8814PhyReg.h
│   ├── Hal8814PwrSeq.h
│   ├── Hal8821APwrSeq.h
│   ├── HalPwrSeqCmd.h
│   ├── HalVerDef.h
│   ├── autoconf.h
│   ├── basic_types.h
│   ├── byteorder/
│   │   ├── big_endian.h
│   │   ├── generic.h
│   │   ├── little_endian.h
│   │   ├── swab.h
│   │   └── swabb.h
│   ├── circ_buf.h
│   ├── cmd_osdep.h
│   ├── custom_gpio.h
│   ├── drv_conf.h
│   ├── drv_types.h
│   ├── drv_types_ce.h
│   ├── drv_types_gspi.h
│   ├── drv_types_linux.h
│   ├── drv_types_pci.h
│   ├── drv_types_sdio.h
│   ├── drv_types_xp.h
│   ├── ethernet.h
│   ├── gspi_hal.h
│   ├── gspi_ops.h
│   ├── gspi_ops_linux.h
│   ├── gspi_osintf.h
│   ├── h2clbk.h
│   ├── hal_btcoex.h
│   ├── hal_com.h
│   ├── hal_com_h2c.h
│   ├── hal_com_led.h
│   ├── hal_com_phycfg.h
│   ├── hal_com_reg.h
│   ├── hal_data.h
│   ├── hal_gspi.h
│   ├── hal_ic_cfg.h
│   ├── hal_intf.h
│   ├── hal_pg.h
│   ├── hal_phy.h
│   ├── hal_phy_reg.h
│   ├── hal_sdio.h
│   ├── ieee80211.h
│   ├── ieee80211_ext.h
│   ├── if_ether.h
│   ├── ip.h
│   ├── linux/
│   │   └── wireless.h
│   ├── mlme_osdep.h
│   ├── mp_custom_oid.h
│   ├── nic_spec.h
│   ├── osdep_intf.h
│   ├── osdep_service.h
│   ├── osdep_service_bsd.h
│   ├── osdep_service_ce.h
│   ├── osdep_service_linux.h
│   ├── osdep_service_xp.h
│   ├── pci_hal.h
│   ├── pci_ops.h
│   ├── pci_osintf.h
│   ├── recv_osdep.h
│   ├── rtl8188e_cmd.h
│   ├── rtl8188e_dm.h
│   ├── rtl8188e_hal.h
│   ├── rtl8188e_led.h
│   ├── rtl8188e_recv.h
│   ├── rtl8188e_rf.h
│   ├── rtl8188e_spec.h
│   ├── rtl8188e_sreset.h
│   ├── rtl8188e_xmit.h
│   ├── rtl8188f_cmd.h
│   ├── rtl8188f_dm.h
│   ├── rtl8188f_hal.h
│   ├── rtl8188f_led.h
│   ├── rtl8188f_recv.h
│   ├── rtl8188f_rf.h
│   ├── rtl8188f_spec.h
│   ├── rtl8188f_sreset.h
│   ├── rtl8188f_xmit.h
│   ├── rtl8192e_cmd.h
│   ├── rtl8192e_dm.h
│   ├── rtl8192e_hal.h
│   ├── rtl8192e_led.h
│   ├── rtl8192e_recv.h
│   ├── rtl8192e_rf.h
│   ├── rtl8192e_spec.h
│   ├── rtl8192e_sreset.h
│   ├── rtl8192e_xmit.h
│   ├── rtl8703b_cmd.h
│   ├── rtl8703b_dm.h
│   ├── rtl8703b_hal.h
│   ├── rtl8703b_led.h
│   ├── rtl8703b_recv.h
│   ├── rtl8703b_rf.h
│   ├── rtl8703b_spec.h
│   ├── rtl8703b_sreset.h
│   ├── rtl8703b_xmit.h
│   ├── rtl8723b_cmd.h
│   ├── rtl8723b_dm.h
│   ├── rtl8723b_hal.h
│   ├── rtl8723b_led.h
│   ├── rtl8723b_recv.h
│   ├── rtl8723b_rf.h
│   ├── rtl8723b_spec.h
│   ├── rtl8723b_sreset.h
│   ├── rtl8723b_xmit.h
│   ├── rtl8812a_cmd.h
│   ├── rtl8812a_dm.h
│   ├── rtl8812a_hal.h
│   ├── rtl8812a_led.h
│   ├── rtl8812a_recv.h
│   ├── rtl8812a_rf.h
│   ├── rtl8812a_spec.h
│   ├── rtl8812a_sreset.h
│   ├── rtl8812a_xmit.h
│   ├── rtl8814a_cmd.h
│   ├── rtl8814a_dm.h
│   ├── rtl8814a_hal.h
│   ├── rtl8814a_led.h
│   ├── rtl8814a_recv.h
│   ├── rtl8814a_rf.h
│   ├── rtl8814a_spec.h
│   ├── rtl8814a_sreset.h
│   ├── rtl8814a_xmit.h
│   ├── rtl8821a_spec.h
│   ├── rtl8821a_xmit.h
│   ├── rtw_android.h
│   ├── rtw_ap.h
│   ├── rtw_beamforming.h
│   ├── rtw_br_ext.h
│   ├── rtw_bt_mp.h
│   ├── rtw_btcoex.h
│   ├── rtw_byteorder.h
│   ├── rtw_cmd.h
│   ├── rtw_debug.h
│   ├── rtw_eeprom.h
│   ├── rtw_efuse.h
│   ├── rtw_event.h
│   ├── rtw_ht.h
│   ├── rtw_io.h
│   ├── rtw_ioctl.h
│   ├── rtw_ioctl_query.h
│   ├── rtw_ioctl_rtl.h
│   ├── rtw_ioctl_set.h
│   ├── rtw_iol.h
│   ├── rtw_mem.h
│   ├── rtw_mlme.h
│   ├── rtw_mlme_ext.h
│   ├── rtw_mp.h
│   ├── rtw_mp_ioctl.h
│   ├── rtw_mp_phy_regdef.h
│   ├── rtw_odm.h
│   ├── rtw_p2p.h
│   ├── rtw_pwrctrl.h
│   ├── rtw_qos.h
│   ├── rtw_recv.h
│   ├── rtw_rf.h
│   ├── rtw_security.h
│   ├── rtw_sreset.h
│   ├── rtw_tdls.h
│   ├── rtw_version.h
│   ├── rtw_vht.h
│   ├── rtw_wapi.h
│   ├── rtw_wifi_regd.h
│   ├── rtw_xmit.h
│   ├── sdio_hal.h
│   ├── sdio_ops.h
│   ├── sdio_ops_ce.h
│   ├── sdio_ops_linux.h
│   ├── sdio_ops_xp.h
│   ├── sdio_osintf.h
│   ├── sta_info.h
│   ├── usb_hal.h
│   ├── usb_ops.h
│   ├── usb_ops_linux.h
│   ├── usb_osintf.h
│   ├── usb_vendor_req.h
│   ├── wifi.h
│   ├── wlan_bssdef.h
│   └── xmit_osdep.h
├── os_dep/
│   ├── linux/
│   │   ├── custom_gpio_linux.c
│   │   ├── ioctl_cfg80211.c
│   │   ├── ioctl_cfg80211.h
│   │   ├── ioctl_linux.c
│   │   ├── ioctl_mp.c
│   │   ├── mlme_linux.c
│   │   ├── os_intfs.c
│   │   ├── recv_linux.c
│   │   ├── rtw_android.c
│   │   ├── rtw_cfgvendor.c
│   │   ├── rtw_cfgvendor.h
│   │   ├── rtw_proc.c
│   │   ├── rtw_proc.h
│   │   ├── usb_intf.c
│   │   ├── usb_ops_linux.c
│   │   ├── wifi_regd.c
│   │   └── xmit_linux.c
│   └── osdep_service.c
├── platform/
│   ├── platform_ARM_SUN50IW1P1_sdio.c
│   ├── platform_ARM_SUNnI_sdio.c
│   ├── platform_ARM_SUNxI_sdio.c
│   ├── platform_ARM_SUNxI_usb.c
│   ├── platform_ARM_WMT_sdio.c
│   ├── platform_RTK_DMP_usb.c
│   ├── platform_arm_act_sdio.c
│   ├── platform_ops.c
│   ├── platform_ops.h
│   └── platform_sprd_sdio.c
├── runwpa
└── wlan0dhcp

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
#
# NOTE! Don't add files that are generated in specific
# subdirectories here. Add them in the ".gitignore" file
# in that subdirectory instead.
#
# NOTE! Please use 'git ls-files -i --exclude-standard'
# command after changing this file, to see if there are
# any tracked files which get ignored after the change.
#
# Normal rules
#
.*
*.o
*.o.*
*.ko
*.mod.c
Module.symvers
modules.order
cscope.*

#
# git files that we don't want to ignore even it they are dot-files
#
!.gitignore



================================================
FILE: Kconfig
================================================
config RTL8814AU
	tristate "Realtek 8814A USB WiFi"
	depends on USB
	---help---
	  Help message of RTL8814AU



================================================
FILE: LICENSE
================================================
# SPDX-Full-Name: GNU General Public License v2.0 only
# SPDX-License-Identifier: GPL-2.0
# SPDX-License-URL: https://spdx.org/licenses/GPL-2.0.html

            GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       51 Franklin St, 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 Library 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.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 St, 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.

  <signature of Ty Coon>, 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 Library General
Public License instead of this License.



================================================
FILE: Makefile
================================================
EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)
EXTRA_CFLAGS += -O1
#EXTRA_CFLAGS += -O3
#EXTRA_CFLAGS += -Wall
#EXTRA_CFLAGS += -Wextra
#EXTRA_CFLAGS += -Werror
#EXTRA_CFLAGS += -pedantic
#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes

EXTRA_CFLAGS += -Wno-unused-variable
EXTRA_CFLAGS += -Wno-unused-value
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 += -I$(src)/include
EXTRA_CFLAGS += -I$(src)/hal/phydm

EXTRA_LDFLAGS += --strip-debug

CONFIG_AUTOCFG_CP = n

########################## WIFI IC ############################
CONFIG_MULTIDRV = n
CONFIG_RTL8188E = n
CONFIG_RTL8812A = n
CONFIG_RTL8821A = n
CONFIG_RTL8192E = n
CONFIG_RTL8723B = n
CONFIG_RTL8814A = y
CONFIG_RTL8723C = n
CONFIG_RTL8188F = n
######################### Interface ###########################
CONFIG_USB_HCI = y
CONFIG_PCI_HCI = n
CONFIG_SDIO_HCI = n
CONFIG_GSPI_HCI = n
########################## Features ###########################
CONFIG_MP_INCLUDED = y
CONFIG_POWER_SAVING = y
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 = n
CONFIG_EXT_CLK = n
CONFIG_TRAFFIC_PROTECT = y
CONFIG_LOAD_PHY_PARA_FROM_FILE = y
CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY = y
CONFIG_CALIBRATE_TX_POWER_TO_MAX = n
CONFIG_RTW_ADAPTIVITY_EN = disable
CONFIG_RTW_ADAPTIVITY_MODE = normal
CONFIG_SIGNAL_SCALE_MAPPING = n
CONFIG_80211W = n
CONFIG_REDUCE_TX_CPU_LOADING = n
CONFIG_BR_EXT = y
CONFIG_ANTENNA_DIVERSITY = n
CONFIG_TDLS = n
CONFIG_WIFI_MONITOR = n
CONFIG_APPEND_VENDOR_IE_ENABLE = n
######################## Wake On Lan ##########################
CONFIG_WOWLAN = n
CONFIG_GPIO_WAKEUP = n
CONFIG_WAKEUP_GPIO_IDX = default
CONFIG_HIGH_ACTIVE = n
CONFIG_PNO_SUPPORT = n
CONFIG_PNO_SET_DEBUG = n
CONFIG_AP_WOWLAN = n
######### Notify SDIO Host Keep Power During Syspend ##########
CONFIG_RTW_SDIO_PM_KEEP_POWER = y
###################### MP HW TX MODE FOR VHT #######################
CONFIG_MP_VHT_HW_TX_MODE = n
###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MIPS_AR9132 = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_MT53XX = n
CONFIG_PLATFORM_ARM_MX51_241H = n
CONFIG_PLATFORM_FS_MX61 = n
CONFIG_PLATFORM_ACTIONS_ATJ227X = n
CONFIG_PLATFORM_TEGRA3_CARDHU = n
CONFIG_PLATFORM_TEGRA4_DALMORE = n
CONFIG_PLATFORM_ARM_TCC8900 = n
CONFIG_PLATFORM_ARM_TCC8920 = n
CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
CONFIG_PLATFORM_ARM_TCC8930_JB42 = n
CONFIG_PLATFORM_ARM_RK2818 = n
CONFIG_PLATFORM_ARM_RK3066 = n
CONFIG_PLATFORM_ARM_RK3188 = n
CONFIG_PLATFORM_ARM_URBETTER = n
CONFIG_PLATFORM_ARM_TI_PANDA = n
CONFIG_PLATFORM_MIPS_JZ4760 = n
CONFIG_PLATFORM_DMP_PHILIPS = n
CONFIG_PLATFORM_MSTAR_TITANIA12 = n
CONFIG_PLATFORM_MSTAR = n
CONFIG_PLATFORM_SZEBOOK = n
CONFIG_PLATFORM_ARM_SUNxI = n
CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ARM_SUN7I = n
CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
CONFIG_PLATFORM_ACTIONS_ATM702X = n
CONFIG_PLATFORM_ACTIONS_ATV5201 = n
CONFIG_PLATFORM_ACTIONS_ATM705X = n
CONFIG_PLATFORM_ARM_SUN50IW1P1 = n
CONFIG_PLATFORM_ARM_RTD299X = n
CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
CONFIG_PLATFORM_ARM_WMT = n
CONFIG_PLATFORM_TI_DM365 = n
CONFIG_PLATFORM_MOZART = n
CONFIG_PLATFORM_RTK119X = n
CONFIG_PLATFORM_NOVATEK_NT72668 = n
CONFIG_PLATFORM_HISILICON = n
###############################################################

CONFIG_DRVEXT_MODULE = n

export TopDIR ?= $(shell pwd)

########### COMMON  #################################
ifeq ($(CONFIG_GSPI_HCI), y)
HCI_NAME = gspi
endif

ifeq ($(CONFIG_SDIO_HCI), y)
HCI_NAME = sdio
endif

ifeq ($(CONFIG_USB_HCI), y)
HCI_NAME = usb
endif

ifeq ($(CONFIG_PCI_HCI), y)
HCI_NAME = pci
endif


_OS_INTFS_FILES :=	os_dep/osdep_service.o \
			os_dep/linux/os_intfs.o \
			os_dep/linux/$(HCI_NAME)_intf.o \
			os_dep/linux/$(HCI_NAME)_ops_linux.o \
			os_dep/linux/ioctl_linux.o \
			os_dep/linux/xmit_linux.o \
			os_dep/linux/mlme_linux.o \
			os_dep/linux/recv_linux.o \
			os_dep/linux/ioctl_cfg80211.o \
			os_dep/linux/rtw_cfgvendor.o \
			os_dep/linux/wifi_regd.o \
			os_dep/linux/rtw_android.o \
			os_dep/linux/rtw_proc.o

ifeq ($(CONFIG_MP_INCLUDED), y)
_OS_INTFS_FILES += os_dep/linux/ioctl_mp.o
endif

ifeq ($(CONFIG_SDIO_HCI), y)
_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
endif

ifeq ($(CONFIG_GSPI_HCI), y)
_OS_INTFS_FILES += os_dep/linux/custom_gpio_linux.o
_OS_INTFS_FILES += os_dep/linux/$(HCI_NAME)_ops_linux.o
endif


_HAL_INTFS_FILES :=	hal/hal_intf.o \
			hal/hal_com.o \
			hal/hal_com_phycfg.o \
			hal/hal_phy.o \
			hal/hal_dm.o \
			hal/hal_btcoex.o \
			hal/hal_mp.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\
		hal/phydm/phydm_interface.o\
		hal/phydm/phydm_hwconfig.o\
		hal/phydm/phydm.o\
		hal/phydm/halphyrf_ce.o\
		hal/phydm/phydm_edcaturbocheck.o\
		hal/phydm/phydm_dig.o\
		hal/phydm/phydm_pathdiv.o\
		hal/phydm/phydm_rainfo.o\
		hal/phydm/phydm_dynamicbbpowersaving.o\
		hal/phydm/phydm_powertracking_ce.o\
		hal/phydm/phydm_dynamictxpower.o\
		hal/phydm/phydm_adaptivity.o\
		hal/phydm/phydm_cfotracking.o\
		hal/phydm/phydm_noisemonitor.o\
		hal/phydm/phydm_acs.o\
		hal/phydm/phydm_beamforming.o\
		hal/phydm/txbf/halcomtxbf.o\
		hal/phydm/txbf/haltxbfinterface.o


EXTRA_CFLAGS += -I$(src)/platform
_PLATFORM_FILES := platform/platform_ops.o

ifeq ($(CONFIG_BT_COEXIST), y)
EXTRA_CFLAGS += -I$(src)/hal/btc
_OUTSRC_FILES += hal/btc/HalBtc8192e1Ant.o \
				hal/btc/HalBtc8192e2Ant.o \
				hal/btc/HalBtc8723b1Ant.o \
				hal/btc/HalBtc8723b2Ant.o \
				hal/btc/HalBtc8812a1Ant.o \
				hal/btc/HalBtc8812a2Ant.o \
				hal/btc/HalBtc8821a1Ant.o \
				hal/btc/HalBtc8821a2Ant.o \
				hal/btc/HalBtc8821aCsr2Ant.o \
				hal/btc/HalBtc8703b1Ant.o \
				hal/btc/HalBtc8703b2Ant.o 
endif


########### HAL_RTL8188E #################################
ifeq ($(CONFIG_RTL8188E), y)

RTL871X = rtl8188e
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8189es
endif

ifeq ($(CONFIG_GSPI_HCI), y)
MODULE_NAME = 8189es
endif

ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8188eu
endif

ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8188ee
endif
EXTRA_CFLAGS += -DCONFIG_RTL8188E

_HAL_INTFS_FILES +=	hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8188EPwrSeq.o\
 					hal/$(RTL871X)/$(RTL871X)_xmit.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
ifeq ($(CONFIG_GSPI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
endif
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_PCIE.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188E_SDIO.o
endif

#hal/OUTSRC/$(RTL871X)/Hal8188EFWImg_CE.o
_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8188e_mac.o\
		hal/phydm/$(RTL871X)/halhwimg8188e_bb.o\
		hal/phydm/$(RTL871X)/halhwimg8188e_rf.o\
		hal/phydm/$(RTL871X)/halhwimg8188e_t_fw.o\
		hal/phydm/$(RTL871X)/halhwimg8188e_s_fw.o\
		hal/phydm/$(RTL871X)/halphyrf_8188e_ce.o\
		hal/phydm/$(RTL871X)/phydm_regconfig8188e.o\
		hal/phydm/$(RTL871X)/hal8188erateadaptive.o\
		hal/phydm/$(RTL871X)/phydm_rtl8188e.o

endif

########### HAL_RTL8192E #################################
ifeq ($(CONFIG_RTL8192E), y)

RTL871X = rtl8192e
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8192es
endif

ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8192eu
endif

ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8192ee
endif
EXTRA_CFLAGS += -DCONFIG_RTL8192E
_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8192EPwrSeq.o\
					hal/$(RTL871X)/$(RTL871X)_xmit.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
ifeq ($(CONFIG_GSPI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
endif
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8192E_PCIE.o
endif

#hal/OUTSRC/$(RTL871X)/HalHWImg8188E_FW.o
_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8192e_mac.o\
		hal/phydm/$(RTL871X)/halhwimg8192e_bb.o\
		hal/phydm/$(RTL871X)/halhwimg8192e_rf.o\
		hal/phydm/$(RTL871X)/halhwimg8192e_fw.o\
		hal/phydm/$(RTL871X)/halphyrf_8192e_ce.o\
		hal/phydm/$(RTL871X)/phydm_regconfig8192e.o\
		hal/phydm/$(RTL871X)/phydm_rtl8192e.o

endif

########### HAL_RTL8812A_RTL8821A #################################

ifneq ($(CONFIG_RTL8812A)_$(CONFIG_RTL8821A), n_n)

RTL871X = rtl8812a
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8812au
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8812ae
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8812as
endif

_HAL_INTFS_FILES +=  hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8812PwrSeq.o \
					hal/$(RTL871X)/Hal8821APwrSeq.o\
					hal/$(RTL871X)/$(RTL871X)_xmit.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
ifeq ($(CONFIG_GSPI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
endif
endif

ifeq ($(CONFIG_RTL8812A), y)
ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8812A_PCIE.o
endif
endif
ifeq ($(CONFIG_RTL8821A), y)
ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8821A_PCIE.o
endif
endif

ifeq ($(CONFIG_RTL8812A), y)
EXTRA_CFLAGS += -DCONFIG_RTL8812A
_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8812a_fw.o\
		hal/phydm/$(RTL871X)/halhwimg8812a_mac.o\
		hal/phydm/$(RTL871X)/halhwimg8812a_bb.o\
		hal/phydm/$(RTL871X)/halhwimg8812a_rf.o\
		hal/phydm/$(RTL871X)/halphyrf_8812a_ce.o\
		hal/phydm/$(RTL871X)/phydm_regconfig8812a.o\
		hal/phydm/$(RTL871X)/phydm_rtl8812a.o\
		hal/phydm/txbf/haltxbfjaguar.o
endif

ifeq ($(CONFIG_RTL8821A), y)

ifeq ($(CONFIG_RTL8812A), n)

RTL871X = rtl8821a
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME := 8821au
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME := 8821ae
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME := 8821as
endif

endif

EXTRA_CFLAGS += -DCONFIG_RTL8821A
_OUTSRC_FILES += hal/phydm/rtl8821a/halhwimg8821a_fw.o\
		hal/phydm/rtl8821a/halhwimg8821a_mac.o\
		hal/phydm/rtl8821a/halhwimg8821a_bb.o\
		hal/phydm/rtl8821a/halhwimg8821a_rf.o\
		hal/phydm/rtl8812a/halphyrf_8812a_ce.o\
		hal/phydm/rtl8821a/halphyrf_8821a_ce.o\
		hal/phydm/rtl8821a/phydm_regconfig8821a.o\
		hal/phydm/rtl8821a/phydm_rtl8821a.o\
		hal/phydm/rtl8821a/phydm_iqk_8821a_ce.o\
		hal/phydm/txbf/haltxbfjaguar.o
		
endif

endif

########### HAL_RTL8723B #################################
ifeq ($(CONFIG_RTL8723B), y)

RTL871X = rtl8723b
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8723bu
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8723be
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8723bs
endif

EXTRA_CFLAGS += -DCONFIG_RTL8723B

_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8723BPwrSeq.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \


_HAL_INTFS_FILES +=	\
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8723B_PCIE.o
endif

_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8723b_bb.o\
								hal/phydm/$(RTL871X)/halhwimg8723b_mac.o\
								hal/phydm/$(RTL871X)/halhwimg8723b_rf.o\
								hal/phydm/$(RTL871X)/halhwimg8723b_fw.o\
								hal/phydm/$(RTL871X)/halhwimg8723b_mp.o\
								hal/phydm/$(RTL871X)/phydm_regconfig8723b.o\
								hal/phydm/$(RTL871X)/halphyrf_8723b_ce.o\
								hal/phydm/$(RTL871X)/phydm_rtl8723b.o

endif

########### HAL_RTL8814A #################################
ifeq ($(CONFIG_RTL8814A), y)
## ADD NEW VHT MP HW TX MODE ##
#EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
#CONFIG_MP_VHT_HW_TX_MODE = y
##########################################
RTL871X = rtl8814a
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8814au
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8814ae
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8814as
endif

EXTRA_CFLAGS += -DCONFIG_RTL8814A

_HAL_INTFS_FILES +=  hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8814PwrSeq.o \
					hal/$(RTL871X)/$(RTL871X)_xmit.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \


_HAL_INTFS_FILES +=	\
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
ifeq ($(CONFIG_GSPI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
endif
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8814A_PCIE.o
endif

_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8814a_bb.o\
								hal/phydm/$(RTL871X)/halhwimg8814a_mac.o\
								hal/phydm/$(RTL871X)/halhwimg8814a_rf.o\
								hal/phydm/$(RTL871X)/halhwimg8814a_fw.o\
								hal/phydm/$(RTL871X)/phydm_iqk_8814a.o\
								hal/phydm/$(RTL871X)/phydm_regconfig8814a.o\
								hal/phydm/$(RTL871X)/halphyrf_8814a_ce.o\
								hal/phydm/$(RTL871X)/phydm_rtl8814a.o\
								hal/phydm/txbf/haltxbf8814a.o

endif


########### HAL_RTL8723C #################################
ifeq ($(CONFIG_RTL8723C), y)

RTL871X = rtl8703b
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8723cu
MODULE_SUB_NAME = 8703bu
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8723ce
MODULE_SUB_NAME = 8703be
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8723cs
MODULE_SUB_NAME = 8703bs
endif

EXTRA_CFLAGS += -DCONFIG_RTL8703B

_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8703BPwrSeq.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \


_HAL_INTFS_FILES +=	\
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_SUB_NAME)_recv.o

ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_USB.o
endif
ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8703B_PCIE.o
endif

_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8703b_bb.o\
								hal/phydm/$(RTL871X)/halhwimg8703b_mac.o\
								hal/phydm/$(RTL871X)/halhwimg8703b_rf.o\
								hal/phydm/$(RTL871X)/halhwimg8703b_fw.o\
								hal/phydm/$(RTL871X)/phydm_regconfig8703b.o\
								hal/phydm/$(RTL871X)/halphyrf_8703b.o
endif

########### HAL_RTL8188F #################################
ifeq ($(CONFIG_RTL8188F), y)

RTL871X = rtl8188f
ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME = 8188fu
endif
ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME = 8188fe
endif
ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME = 8189fs
endif

EXTRA_CFLAGS += -DCONFIG_RTL8188F

_HAL_INTFS_FILES += hal/HalPwrSeqCmd.o \
					hal/$(RTL871X)/Hal8188FPwrSeq.o\
					hal/$(RTL871X)/$(RTL871X)_sreset.o

_HAL_INTFS_FILES +=	hal/$(RTL871X)/$(RTL871X)_hal_init.o \
			hal/$(RTL871X)/$(RTL871X)_phycfg.o \
			hal/$(RTL871X)/$(RTL871X)_rf6052.o \
			hal/$(RTL871X)/$(RTL871X)_dm.o \
			hal/$(RTL871X)/$(RTL871X)_rxdesc.o \
			hal/$(RTL871X)/$(RTL871X)_cmd.o \


_HAL_INTFS_FILES +=	\
			hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \
			hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o

ifeq ($(CONFIG_PCI_HCI), y)
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o
else
_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o
endif

ifeq ($(CONFIG_USB_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_USB.o
endif

ifeq ($(CONFIG_SDIO_HCI), y)
_HAL_INTFS_FILES +=hal/efuse/$(RTL871X)/HalEfuseMask8188F_SDIO.o
endif

_OUTSRC_FILES += hal/phydm/$(RTL871X)/halhwimg8188f_bb.o\
								hal/phydm/$(RTL871X)/halhwimg8188f_mac.o\
								hal/phydm/$(RTL871X)/halhwimg8188f_rf.o\
								hal/phydm/$(RTL871X)/halhwimg8188f_fw.o\
								hal/phydm/$(RTL871X)/phydm_regconfig8188f.o\
								hal/phydm/$(RTL871X)/halphyrf_8188f.o \
								hal/phydm/$(RTL871X)/phydm_rtl8188f.o

endif

########### AUTO_CFG  #################################

ifeq ($(CONFIG_AUTOCFG_CP), y)

ifeq ($(CONFIG_MULTIDRV), y)
$(shell cp $(TopDIR)/autoconf_multidrv_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
else
ifeq ($(CONFIG_RTL8188E)$(CONFIG_SDIO_HCI),yy)
$(shell cp $(TopDIR)/autoconf_rtl8189e_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
else ifeq ($(CONFIG_RTL8188F)$(CONFIG_SDIO_HCI),yy)
$(shell cp $(TopDIR)/autoconf_rtl8189f_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
else ifeq ($(CONFIG_RTL8723C),y)
$(shell cp $(TopDIR)/autoconf_rtl8723c_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
else
$(shell cp $(TopDIR)/autoconf_$(RTL871X)_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h)
endif
endif

endif

########### END OF PATH  #################################


ifeq ($(CONFIG_USB_HCI), y)
ifeq ($(CONFIG_USB_AUTOSUSPEND), y)
EXTRA_CFLAGS += -DCONFIG_USB_AUTOSUSPEND
endif
endif

ifeq ($(CONFIG_MP_INCLUDED), y)
#MODULE_NAME := $(MODULE_NAME)_mp
EXTRA_CFLAGS += -DCONFIG_MP_INCLUDED
endif

ifeq ($(CONFIG_POWER_SAVING), y)
EXTRA_CFLAGS += -DCONFIG_POWER_SAVING
endif

ifeq ($(CONFIG_HW_PWRP_DETECTION), y)
EXTRA_CFLAGS += -DCONFIG_HW_PWRP_DETECTION
endif

ifeq ($(CONFIG_WIFI_TEST), y)
EXTRA_CFLAGS += -DCONFIG_WIFI_TEST
endif

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

#EFUSE_MAP_PATH
USER_EFUSE_MAP_PATH ?=
ifneq ($(USER_EFUSE_MAP_PATH),)
EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"$(USER_EFUSE_MAP_PATH)\"
else ifeq ($(MODULE_NAME), 8189es)
EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8189e.map\"
else ifeq ($(MODULE_NAME), 8723bs)
EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_8723bs.map\"
else
EXTRA_CFLAGS += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_$(MODULE_NAME).map\"
endif

#WIFIMAC_PATH
USER_WIFIMAC_PATH ?=
ifneq ($(USER_WIFIMAC_PATH),)
EXTRA_CFLAGS += -DWIFIMAC_PATH=\"$(USER_WIFIMAC_PATH)\"
else
EXTRA_CFLAGS += -DWIFIMAC_PATH=\"/data/wifimac.txt\"
endif

endif

ifeq ($(CONFIG_EXT_CLK), y)
EXTRA_CFLAGS += -DCONFIG_EXT_CLK
endif

ifeq ($(CONFIG_TRAFFIC_PROTECT), y)
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
endif

ifeq ($(CONFIG_LOAD_PHY_PARA_FROM_FILE), y)
EXTRA_CFLAGS += -DCONFIG_LOAD_PHY_PARA_FROM_FILE
#EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH=\"/lib/firmware/\"
EXTRA_CFLAGS += -DREALTEK_CONFIG_PATH=\"\"
endif

ifeq ($(CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY), y)
EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_BY_REGULATORY
endif

ifeq ($(CONFIG_CALIBRATE_TX_POWER_TO_MAX), y)
EXTRA_CFLAGS += -DCONFIG_CALIBRATE_TX_POWER_TO_MAX
endif

ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), disable)
EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=0
else ifeq ($(CONFIG_RTW_ADAPTIVITY_EN), enable)
EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_EN=1
endif

ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), normal)
EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=0
else ifeq ($(CONFIG_RTW_ADAPTIVITY_MODE), carrier_sense)
EXTRA_CFLAGS += -DCONFIG_RTW_ADAPTIVITY_MODE=1
endif

ifeq ($(CONFIG_SIGNAL_SCALE_MAPPING), y)
EXTRA_CFLAGS += -DCONFIG_SIGNAL_SCALE_MAPPING
endif

ifeq ($(CONFIG_80211W), y)
EXTRA_CFLAGS += -DCONFIG_IEEE80211W
endif

ifeq ($(CONFIG_WOWLAN), y)
EXTRA_CFLAGS += -DCONFIG_WOWLAN
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
endif
endif

ifeq ($(CONFIG_AP_WOWLAN), y)
EXTRA_CFLAGS += -DCONFIG_AP_WOWLAN
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
endif
endif

ifeq ($(CONFIG_PNO_SUPPORT), y)
EXTRA_CFLAGS += -DCONFIG_PNO_SUPPORT
ifeq ($(CONFIG_PNO_SET_DEBUG), y)
EXTRA_CFLAGS += -DCONFIG_PNO_SET_DEBUG
endif
endif

ifeq ($(CONFIG_GPIO_WAKEUP), y)
EXTRA_CFLAGS += -DCONFIG_GPIO_WAKEUP
ifeq ($(CONFIG_HIGH_ACTIVE), y)
EXTRA_CFLAGS += -DHIGH_ACTIVE=1
else
EXTRA_CFLAGS += -DHIGH_ACTIVE=0
endif
endif

ifneq ($(CONFIG_WAKEUP_GPIO_IDX), default)
EXTRA_CFLAGS += -DWAKEUP_GPIO_IDX=$(CONFIG_WAKEUP_GPIO_IDX)
endif

ifeq ($(CONFIG_RTW_SDIO_PM_KEEP_POWER), y)
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_RTW_SDIO_PM_KEEP_POWER
endif
endif

ifeq ($(CONFIG_REDUCE_TX_CPU_LOADING), y)
EXTRA_CFLAGS += -DCONFIG_REDUCE_TX_CPU_LOADING
endif

ifeq ($(CONFIG_BR_EXT), y)
BR_NAME = br0
EXTRA_CFLAGS += -DCONFIG_BR_EXT
EXTRA_CFLAGS += '-DCONFIG_BR_EXT_BRNAME="'$(BR_NAME)'"'
endif

ifeq ($(CONFIG_ANTENNA_DIVERSITY), y)
EXTRA_CFLAGS += -DCONFIG_ANTENNA_DIVERSITY
endif

ifeq ($(CONFIG_TDLS), y)
EXTRA_CFLAGS += -DCONFIG_TDLS
endif

ifeq ($(CONFIG_WIFI_MONITOR), y)
EXTRA_CFLAGS += -DCONFIG_WIFI_MONITOR
endif

ifeq ($(CONFIG_MP_VHT_HW_TX_MODE), y)
EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE
ifeq ($(CONFIG_PLATFORM_I386_PC), y)
## For I386 X86 ToolChain use Hardware FLOATING
EXTRA_CFLAGS += -mhard-float
else
## For ARM ToolChain use Hardware FLOATING
EXTRA_CFLAGS += -mfloat-abi=hard
endif
endif

ifeq ($(CONFIG_APPEND_VENDOR_IE_ENABLE), y)
EXTRA_CFLAGS += -DCONFIG_APPEND_VENDOR_IE_ENABLE
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/)
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_ACTIONS_ATM702X), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ACTIONS_ATM702X
#ARCH := arm
ARCH := $(R_ARCH)
#CROSS_COMPILE := arm-none-linux-gnueabi-
CROSS_COMPILE := $(R_CROSS_COMPILE)
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
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ACTIONS_ATM705X
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS

# Enable this for Android 5.0
EXTRA_CFLAGS += -DCONFIG_RADIO_WORK

ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
_PLATFORM_FILES += platform/platform_arm_act_sdio.o
endif

ARCH := arm
CROSS_COMPILE := /opt/arm-2011.09/bin/arm-none-linux-gnueabi-
KSRC := /home/android_sdk/Action-semi/705a_android_L/android/kernel
endif

ifeq ($(CONFIG_PLATFORM_ARM_SUN50IW1P1), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN50IW1P1
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS

# Enable this for Android 5.0
EXTRA_CFLAGS += -DCONFIG_RADIO_WORK

ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_SUN50IW1P1_sdio.o
endif

ARCH := arm64
# ===Cross compile setting for Android 5.1(64) SDK ===
CROSS_COMPILE := /home/android_sdk/Allwinner/a64/android-51/lichee/out/sun50iw1p1/android/common/buildroot/external-toolchain/bin/aarch64-linux-gnu-
KSRC :=/home/android_sdk/Allwinner/a64/android-51/lichee/linux-3.10/
endif

ifeq ($(CONFIG_PLATFORM_TI_AM3517), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE
CROSS_COMPILE := arm-eabi-
KSRC := $(shell pwd)/../../../Android/kernel
ARCH := arm
endif

ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12
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/
endif

ifeq ($(CONFIG_PLATFORM_MSTAR), y)
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
CROSS_COMPILE:= /usr/src/bin/arm-none-linux-gnueabi-
KVER:= 3.1.10
KSRC:= /usr/src/Mstar_kernel/3.1.10/
endif

ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH := $(SUBARCH)
CROSS_COMPILE := /media/DATA-2/android-x86/ics-x86_20120130/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-
KSRC := /media/DATA-2/android-x86/ics-x86_20120130/out/target/product/generic_x86/obj/kernel
MODULE_NAME :=wlan
endif

ifeq ($(CONFIG_PLATFORM_ANDROID_INTEL_X86), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ANDROID_INTEL_X86
EXTRA_CFLAGS += -DCONFIG_PLATFORM_INTEL_BYT
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
EXTRA_CFLAGS += -DCONFIG_SKIP_SIGNAL_SCALE_MAPPING
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_RESUME_IN_WORKQUEUE
endif
endif

ifeq ($(CONFIG_PLATFORM_JB_X86), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
ARCH := $(SUBARCH)
CROSS_COMPILE := /home/android_sdk/android-x86_JB/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7/bin/i686-linux-android-
KSRC := /home/android_sdk/android-x86_JB/out/target/product/x86/obj/kernel/
MODULE_NAME :=wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
KVER  := 2.6.34.1
KSRC ?= /usr/src/linux-2.6.34.1
endif

ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER  := 2.6.24.7_$(ARCH)
KSRC := /usr/src/kernels/linux-$(KVER)
endif

ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
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:=
CROSS_COMPILE:=
KVER:=
KSRC:=
endif

ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH:=mips
CROSS_COMPILE:=mipsisa32r2-uclibc-
KVER:=
KSRC:= /root/work/kernel_realtek
endif

ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y)
EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
ARCH:=mips
CROSS_COMPILE:=mipsisa32r2-uclibc-
KVER:=
KSRC:= /root/work/kernel_realtek
endif

ifeq ($(CONFIG_PLATFORM_MSTAR389), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389
ARCH:=mips
CROSS_COMPILE:= mips-linux-gnu-
KVER:= 2.6.28.10
KSRC:= /home/mstar/mstar_linux/2.6.28.9/
endif

ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y)
EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN
ARCH := mips
CROSS_COMPILE := mips-openwrt-linux-
KSRC := /home/alex/test_openwrt/tmp/linux-2.6.30.9
endif

ifeq ($(CONFIG_PLATFORM_DMP_PHILIPS), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM
ARCH := mips
#CROSS_COMPILE:=/usr/local/msdk-4.3.6-mips-EL-2.6.12.6-0.9.30.3/bin/mipsel-linux-
CROSS_COMPILE:=/usr/local/toolchain_mipsel/bin/mipsel-linux-
KSRC ?=/usr/local/Jupiter/linux-2.6.12
endif

ifeq ($(CONFIG_PLATFORM_RTK_DMP), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM  -DCONFIG_WIRELESS_EXT
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:=
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
CROSS_COMPILE:= arm11_mtk_le-
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
KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source
endif

ifeq ($(CONFIG_PLATFORM_FS_MX61), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi-
KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env
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
KSRC := /home/cnsd4/project/actions/linux-2.6.27.28
endif

ifeq ($(CONFIG_PLATFORM_TI_DM365), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_TI_DM365
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX
EXTRA_CFLAGS += -DCONFIG_SINGLE_XMIT_BUF -DCONFIG_SINGLE_RECV_BUF
ARCH := arm
#CROSS_COMPILE := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-
#KSRC := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/lsp/ti-davinci/linux-dm365
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
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)
KSRC:= /opt/Vivotek/lsp/mozart3v2/kernel_platform/kernel/mozart_kernel-1.17
KERNELOUTPUT := /home/pink/sample/ODM/IP8136W-VINT/tmp/kernel
endif

ifeq ($(CONFIG_PLATFORM_TEGRA3_CARDHU), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ARCH := arm
CROSS_COMPILE := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/out/target/product/cardhu/obj/KERNEL
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_TEGRA4_DALMORE), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ARCH := arm
CROSS_COMPILE := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/out/target/product/dalmore/obj/KERNEL
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_TCC8900), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Telechips/SDK_2304_20110613/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /home/android_sdk/Telechips/SDK_2304_20110613/kernel
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_TCC8920), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/kernel
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_TCC8920_JB42), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/kernel
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_RK2818), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
ARCH := arm
CROSS_COMPILE := /usr/src/release_fae_version/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
KSRC := /usr/src/release_fae_version/kernel25_A7_281x
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_RK3188), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
# default setting for Power control
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
# default setting for Special function
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_RK3066), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_RK3066
EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
endif
EXTRA_CFLAGS += -fno-pic
ARCH := arm
CROSS_COMPILE := /home/android_sdk/Rockchip/rk3066_20130607/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
#CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3066sdk/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-
KSRC := /home/android_sdk/Rockchip/Rk3066sdk/kernel
MODULE_NAME :=wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_URBETTER), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
ARCH := arm
CROSS_COMPILE := /media/DATA-1/urbetter/arm-2009q3/bin/arm-none-linux-gnueabi-
KSRC := /media/DATA-1/urbetter/ics-urbetter/kernel
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_ARM_TI_PANDA), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE
ARCH := arm
#CROSS_COMPILE := /media/DATA-1/aosp/ics-aosp_20111227/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
#KSRC := /media/DATA-1/aosp/android-omap-panda-3.0_20120104
CROSS_COMPILE := /media/DATA-1/android-4.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
KSRC := /media/DATA-1/android-4.0/panda_kernel/omap
MODULE_NAME := wlan
endif

ifeq ($(CONFIG_PLATFORM_MIPS_JZ4760), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_MINIMAL_MEMORY_USAGE
ARCH ?= mips
CROSS_COMPILE ?= /mnt/sdb5/Ingenic/Umido/mips-4.3/bin/mips-linux-gnu-
KSRC ?= /mnt/sdb5/Ingenic/Umido/kernel
endif

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/
endif

#Add setting for MN10300
ifeq ($(CONFIG_PLATFORM_MN10300), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MN10300
ARCH := mn10300
CROSS_COMPILE := mn10300-linux-
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
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DDCONFIG_P2P_IPS

EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
# default setting for A10-EVB mmc0
#EXTRA_CFLAGS += -DCONFIG_WITS_EVB_V13
_PLATFORM_FILES += platform/platform_ARM_SUNxI_sdio.o
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
#KSRC:= ../lichee/linux-3.0/
KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0
endif

ifeq ($(CONFIG_PLATFORM_ARM_SUN6I), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN6I
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_QOS_OPTIMIZATION

EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
# default setting for A31-EVB mmc0
EXTRA_CFLAGS += -DCONFIG_A31_EVB
_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
endif

ARCH := arm
#Android-JB42
#CROSS_COMPILE := /home/android_sdk/Allwinner/a31/android-jb42/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
#KSRC :=/home/android_sdk/Allwinner/a31/android-jb42/lichee/linux-3.3
#ifeq ($(CONFIG_USB_HCI), y)
#MODULE_NAME := 8188eu_sw
#endif
# ==== Cross compile setting for kitkat-a3x_v4.5 =====
CROSS_COMPILE := /home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/buildroot/output/external-toolchain/bin/arm-linux-gnueabi-
KSRC :=/home/android_sdk/Allwinner/a31/kitkat-a3x_v4.5/lichee/linux-3.3
endif

ifeq ($(CONFIG_PLATFORM_ARM_SUN7I), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2, 4.3, 4.4
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_QOS_OPTIMIZATION

EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
endif

ARCH := arm
# ===Cross compile setting for Android 4.2 SDK ===
#CROSS_COMPILE := /home/android_sdk/Allwinner/a20_evb/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
#KSRC := /home/android_sdk/Allwinner/a20_evb/lichee/linux-3.3
# ==== Cross compile setting for Android 4.3 SDK =====
#CROSS_COMPILE := /home/android_sdk/Allwinner/a20/android-jb43/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
#KSRC := /home/android_sdk/Allwinner/a20/android-jb43/lichee/linux-3.4
# ==== Cross compile setting for kitkat-a20_v4.4 =====
CROSS_COMPILE := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
KSRC := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/linux-3.4
endif

ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W3P1), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W3P1
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS

EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
endif

ARCH := arm
# ===Cross compile setting for Android 4.2 SDK ===
#CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-jb42/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
#KSRC :=/home/android_sdk/Allwinner/a23/android-jb42/lichee/linux-3.4
# ===Cross compile setting for Android 4.4 SDK ===
CROSS_COMPILE := /home/android_sdk/Allwinner/a23/android-kk44/lichee/out/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
KSRC :=/home/android_sdk/Allwinner/a23/android-kk44/lichee/linux-3.4
endif

ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W5P1), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I_W5P1
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS

# Enable this for Android 5.0
EXTRA_CFLAGS += -DCONFIG_RADIO_WORK

EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
endif

ARCH := arm
# ===Cross compile setting for Android L SDK ===
CROSS_COMPILE := /home/android_sdk/Allwinner/a33/android-L/lichee/out/sun8iw5p1/android/common/buildroot/external-toolchain/bin/arm-linux-gnueabi-
KSRC :=/home/android_sdk/Allwinner/a33/android-L/lichee/linux-3.4
endif

ifeq ($(CONFIG_PLATFORM_ACTIONS_ATV5201), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATV5201
EXTRA_CFLAGS += -DCONFIG_SDIO_DISABLE_RXFIFO_POLLING_LOOP
ARCH := mips
CROSS_COMPILE := mipsel-linux-gnu-
KVER  := $(KERNEL_VER)
KSRC:= $(CFGDIR)/../../kernel/linux-$(KERNEL_VER)
endif

ifeq ($(CONFIG_PLATFORM_ARM_RTD299X), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DUSB_XMITBUF_ALIGN_SZ=1024 -DUSB_PACKET_OFFSET_SZ=0
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ifeq ($(CONFIG_ANDROID), y)
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
# Enable this for Android 5.0
EXTRA_CFLAGS += -DCONFIG_RADIO_WORK
endif
#ARCH, CROSS_COMPILE, KSRC,and  MODDESTDIR are provided by external makefile
INSTALL_PREFIX :=
endif

ifeq ($(CONFIG_PLATFORM_HISILICON), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_HISILICON
ifeq ($(SUPPORT_CONCURRENT),y)
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
endif
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
ARCH := arm
ifeq ($(CROSS_COMPILE),)
       CROSS_COMPILE = arm-hisiv200-linux-
endif
MODULE_NAME := rtl8192eu
ifeq ($(KSRC),)
       KSRC := ../../../../../../kernel/linux-3.4.y
endif
endif

# Platform setting
ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_6820), y)
ifeq ($(CONFIG_ANDROID_2X), y)
EXTRA_CFLAGS += -DANDROID_2X
endif
EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_6820
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ifeq ($(RTL871X), rtl8188e)
EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
endif
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
_PLATFORM_FILES += platform/platform_sprd_sdio.o
endif
endif

ifeq ($(CONFIG_PLATFORM_ARM_SPREADTRUM_8810), y)
ifeq ($(CONFIG_ANDROID_2X), y)
EXTRA_CFLAGS += -DANDROID_2X
endif
EXTRA_CFLAGS += -DCONFIG_PLATFORM_SPRD
EXTRA_CFLAGS += -DPLATFORM_SPREADTRUM_8810
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ifeq ($(RTL871X), rtl8188e)
EXTRA_CFLAGS += -DSOFTAP_PS_DURATION=50
endif
ifeq ($(CONFIG_SDIO_HCI), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
_PLATFORM_FILES += platform/platform_sprd_sdio.o
endif
endif

ifeq ($(CONFIG_PLATFORM_ARM_WMT), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_WMT_sdio.o
endif
ARCH := arm
CROSS_COMPILE := /home/android_sdk/WonderMedia/wm8880-android4.4/toolchain/arm_201103_gcc4.5.2/mybin/arm_1103_le-
KSRC := /home/android_sdk/WonderMedia/wm8880-android4.4/kernel4.4/
MODULE_NAME :=8189es_kk
endif

ifeq ($(CONFIG_PLATFORM_RTK119X), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
#EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN7I
EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
#EXTRA_CFLAGS += -DCONFIG_P2P_IPS -DCONFIG_QOS_OPTIMIZATION
EXTRA_CFLAGS += -DCONFIG_QOS_OPTIMIZATION

#EXTRA_CFLAGS += -DCONFIG_#PLATFORM_OPS
ifeq ($(CONFIG_USB_HCI), y)
EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX
#_PLATFORM_FILES += platform/platform_ARM_SUNxI_usb.o
endif
ifeq ($(CONFIG_SDIO_HCI), y)
_PLATFORM_FILES += platform/platform_ARM_SUNnI_sdio.o
endif

ARCH := arm

# ==== Cross compile setting for Android 4.4 SDK =====
#CROSS_COMPILE := arm-linux-gnueabihf-
KVER  := 3.10.24
#KSRC :=/home/android_sdk/Allwinner/a20/android-kitkat44/lichee/linux-3.4
CROSS_COMPILE := /home/realtek/software_phoenix/phoenix/toolchain/usr/local/arm-2013.11/bin/arm-linux-gnueabihf-
KSRC := /home/realtek/software_phoenix/linux-kernel
MODULE_NAME := 8192eu

endif

ifeq ($(CONFIG_PLATFORM_NOVATEK_NT72668), y)
EXTRA_CFLAGS += -DCONFIG_PLATFORM_NOVATEK_NT72668
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DDCONFIG_P2P_IPS
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
KSRC := /Custom/Novatek/TCL/linux-3.8_header
#KSRC := $(KERNELDIR)
endif

ifeq ($(CONFIG_PLATFORM_ARM_TCC8930_JB42), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
# default setting for Android 4.1, 4.2
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P_IPS
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 

ifeq ($(CONFIG_MULTIDRV), y)

ifeq ($(CONFIG_SDIO_HCI), y)
MODULE_NAME := rtw_sdio
endif

ifeq ($(CONFIG_USB_HCI), y)
MODULE_NAME := rtw_usb
endif

ifeq ($(CONFIG_PCI_HCI), y)
MODULE_NAME := rtw_pci
endif


endif

USER_MODULE_NAME ?=
ifneq ($(USER_MODULE_NAME),)
MODULE_NAME := $(USER_MODULE_NAME)
endif

ifneq ($(KERNELRELEASE),)

rtk_core :=	core/rtw_cmd.o \
		core/rtw_security.o \
		core/rtw_debug.o \
		core/rtw_io.o \
		core/rtw_ioctl_query.o \
		core/rtw_ioctl_set.o \
		core/rtw_ieee80211.o \
		core/rtw_mlme.o \
		core/rtw_mlme_ext.o \
		core/rtw_wlan_util.o \
		core/rtw_vht.o \
		core/rtw_pwrctrl.o \
		core/rtw_rf.o \
		core/rtw_recv.o \
		core/rtw_sta_mgt.o \
		core/rtw_ap.o \
		core/rtw_xmit.o	\
		core/rtw_p2p.o \
		core/rtw_tdls.o \
		core/rtw_br_ext.o \
		core/rtw_iol.o \
		core/rtw_sreset.o \
		core/rtw_btcoex.o \
		core/rtw_beamforming.o \
		core/rtw_odm.o \
		core/efuse/rtw_efuse.o 

$(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

$(MODULE_NAME)-y += $(_OS_INTFS_FILES)
$(MODULE_NAME)-y += $(_HAL_INTFS_FILES)
$(MODULE_NAME)-y += $(_OUTSRC_FILES)
$(MODULE_NAME)-y += $(_PLATFORM_FILES)

$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o \
					core/rtw_mp_ioctl.o

ifeq ($(CONFIG_RTL8723B), y)
$(MODULE_NAME)-$(CONFIG_MP_INCLUDED)+= core/rtw_bt_mp.o
endif

obj-$(CONFIG_RTL8814AU) := $(MODULE_NAME).o

else

export CONFIG_RTL8814AU = m

all: modules

modules:
	$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd)  modules

strip:
	$(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded

install:
	install -p -m 644 $(MODULE_NAME).ko  $(MODDESTDIR)
	/sbin/depmod -a ${KVER}

uninstall:
	rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
	/sbin/depmod -a ${KVER}

config_r:
	@echo "make config"
	/bin/bash script/Configure script/config.in


.PHONY: modules clean

clean:
	cd hal/phydm/ ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
	cd hal/phydm/ ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd hal/led ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd hal ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
	cd hal ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
	cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd core/efuse ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	cd platform ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
	rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
	rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
	rm -fr .tmp_versions
endif



================================================
FILE: README.md
================================================
# rtl8814AU
Realtek 8814AU USB WiFi driver.

Forked from [Diederik de Haas](https://github.com/diederikdehaas/rtl8814AU)'
repository which is based on version 4.3.21 of an Edimax driver for the
EW-7833UAC device.

Updated with support for kernels >= 4.14.

# DKMS support

From your src dir

````
sudo cp -R . /usr/src/rtl8814au-4.3.21
sudo dkms build -m rtl8814au -v 4.3.21
sudo dkms install -m rtl8814au -v 4.3.21
````

This should keep your 8814AU adapter working post kernel updates.


================================================
FILE: clean
================================================
#!/bin/bash
rmmod 8192cu
rmmod 8192ce
rmmod 8192du
rmmod 8192de


================================================
FILE: core/efuse/rtw_efuse.c
================================================
/******************************************************************************
 *
 * 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
 *
 *
 ******************************************************************************/
#define _RTW_EFUSE_C_

#include <drv_types.h>
#include <hal_data.h>

#include "../hal/efuse/efuse_mask.h"

/*------------------------Define local variable------------------------------*/
u8	fakeEfuseBank=0;
u32	fakeEfuseUsedBytes=0;
u8	fakeEfuseContent[EFUSE_MAX_HW_SIZE]={0};
u8	fakeEfuseInitMap[EFUSE_MAX_MAP_LEN]={0};
u8	fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN]={0};

u32	BTEfuseUsedBytes=0;
u8	BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
u8	BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]={0};
u8	BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]={0};

u32	fakeBTEfuseUsedBytes=0;
u8	fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
u8	fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]={0};
u8	fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]={0};

u8 	maskfileBuffer[32];
/*------------------------Define local variable------------------------------*/

//------------------------------------------------------------------------------
#define REG_EFUSE_CTRL		0x0030
#define EFUSE_CTRL			REG_EFUSE_CTRL		// E-Fuse Control.
//------------------------------------------------------------------------------

BOOLEAN
Efuse_Read1ByteFromFakeContent(
	IN		PADAPTER	pAdapter,
	IN		u16		Offset,
	IN OUT	u8		*Value	);
BOOLEAN
Efuse_Read1ByteFromFakeContent(
	IN		PADAPTER	pAdapter,
	IN		u16		Offset,
	IN OUT	u8		*Value	)
{
	if(Offset >= EFUSE_MAX_HW_SIZE)
	{
		return _FALSE;
	}
	//DbgPrint("Read fake content, offset = %d\n", Offset);
	if(fakeEfuseBank == 0)
		*Value = fakeEfuseContent[Offset];
	else
		*Value = fakeBTEfuseContent[fakeEfuseBank-1][Offset];
	return _TRUE;
}

BOOLEAN
Efuse_Write1ByteToFakeContent(
	IN		PADAPTER	pAdapter,
	IN		u16		Offset,
	IN 		u8		Value	);
BOOLEAN
Efuse_Write1ByteToFakeContent(
	IN		PADAPTER	pAdapter,
	IN		u16		Offset,
	IN 		u8		Value	)
{
	if(Offset >= EFUSE_MAX_HW_SIZE)
	{
		return _FALSE;
	}
	if(fakeEfuseBank == 0)
		fakeEfuseContent[Offset] = Value;
	else
	{
		fakeBTEfuseContent[fakeEfuseBank-1][Offset] = Value;
	}
	return _TRUE;
}

/*-----------------------------------------------------------------------------
 * Function:	Efuse_PowerSwitch
 *
 * Overview:	When we want to enable write operation, we should change to 
 *				pwr on state. When we stop write, we should switch to 500k mode
 *				and disable LDO 2.5V.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/17/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
VOID
Efuse_PowerSwitch(
	IN	PADAPTER	pAdapter,
	IN	u8		bWrite,
	IN	u8		PwrState)
{
	pAdapter->HalFunc.EfusePowerSwitch(pAdapter, bWrite, PwrState);
}

VOID
BTEfuse_PowerSwitch(
	IN	PADAPTER	pAdapter,
	IN	u8		bWrite,
	IN	u8		PwrState)
{
	if(pAdapter->HalFunc.BTEfusePowerSwitch)
		pAdapter->HalFunc.BTEfusePowerSwitch(pAdapter, bWrite, PwrState);
}

/*-----------------------------------------------------------------------------
 * Function:	efuse_GetCurrentSize
 *
 * Overview:	Get current efuse size!!!
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/16/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
u16
Efuse_GetCurrentSize(
	IN PADAPTER		pAdapter,
	IN u8			efuseType,
	IN BOOLEAN		bPseudoTest)
{
	u16 ret=0;

	ret = pAdapter->HalFunc.EfuseGetCurrentSize(pAdapter, efuseType, bPseudoTest);

	return ret;
}

/*  11/16/2008 MH Add description. Get current efuse area enabled word!!. */
u8
Efuse_CalculateWordCnts(IN u8	word_en)
{
	u8 word_cnts = 0;
	if(!(word_en & BIT(0)))	word_cnts++; // 0 : write enable
	if(!(word_en & BIT(1)))	word_cnts++;
	if(!(word_en & BIT(2)))	word_cnts++;
	if(!(word_en & BIT(3)))	word_cnts++;
	return word_cnts;
}

//
//	Description:
//		Execute E-Fuse read byte operation.
//		Refered from SD1 Richard.
//
//	Assumption:
//		1. Boot from E-Fuse and successfully auto-load.
//		2. PASSIVE_LEVEL (USB interface)
//
//	Created by Roger, 2008.10.21.
//
VOID
ReadEFuseByte(
		PADAPTER	Adapter,
		u16 			_offset, 
		u8 			*pbuf, 
		IN BOOLEAN	bPseudoTest) 
{
	u32	value32;
	u8	readbyte;
	u16	retry;
	//u32 start=rtw_get_current_time();

	if(bPseudoTest)
	{
		Efuse_Read1ByteFromFakeContent(Adapter, _offset, pbuf);
		return;
	}
	if (IS_HARDWARE_TYPE_8723B(Adapter))
	{
		// <20130121, Kordan> For SMIC S55 EFUSE specificatoin.
		//0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8])
		PHY_SetMacReg(Adapter, EFUSE_TEST, BIT11, 0);
	}
	//Write Address
	rtw_write8(Adapter, EFUSE_CTRL+1, (_offset & 0xff));  		
	readbyte = rtw_read8(Adapter, EFUSE_CTRL+2);
	rtw_write8(Adapter, EFUSE_CTRL+2, ((_offset >> 8) & 0x03) | (readbyte & 0xfc));  		

	//Write bit 32 0
	readbyte = rtw_read8(Adapter, EFUSE_CTRL+3);		
	rtw_write8(Adapter, EFUSE_CTRL+3, (readbyte & 0x7f));  	
	
	//Check bit 32 read-ready
	retry = 0;
	value32 = rtw_read32(Adapter, EFUSE_CTRL);
	//while(!(((value32 >> 24) & 0xff) & 0x80)  && (retry<10))
	while(!(((value32 >> 24) & 0xff) & 0x80)  && (retry<10000))
	{
		value32 = rtw_read32(Adapter, EFUSE_CTRL);
		retry++;
	}

	// 20100205 Joseph: Add delay suggested by SD1 Victor.
	// This fix the problem that Efuse read error in high temperature condition.
	// Designer says that there shall be some delay after ready bit is set, or the
	// result will always stay on last data we read.
	rtw_udelay_os(50);
	value32 = rtw_read32(Adapter, EFUSE_CTRL);
	
	*pbuf = (u8)(value32 & 0xff);
	//DBG_871X("ReadEFuseByte _offset:%08u, in %d ms\n",_offset ,rtw_get_passing_time_ms(start));
	
}

//
//	Description:
//		1. Execute E-Fuse read byte operation according as map offset and 
//		    save to E-Fuse table.
//		2. Refered from SD1 Richard.
//
//	Assumption:
//		1. Boot from E-Fuse and successfully auto-load.
//		2. PASSIVE_LEVEL (USB interface)
//
//	Created by Roger, 2008.10.21.
//
//	2008/12/12 MH 	1. Reorganize code flow and reserve bytes. and add description.
//					2. Add efuse utilization collect.
//	2008/12/22 MH	Read Efuse must check if we write section 1 data again!!! Sec1
//					write addr must be after sec5.
//

VOID
efuse_ReadEFuse(
	PADAPTER	Adapter,
	u8		efuseType,
	u16		_offset,
	u16 		_size_byte,
	u8      	*pbuf,
	IN	BOOLEAN	bPseudoTest
	);
VOID
efuse_ReadEFuse(
	PADAPTER	Adapter,
	u8		efuseType,
	u16		_offset,
	u16 		_size_byte,
	u8      	*pbuf,
	IN	BOOLEAN	bPseudoTest
	)
{
	Adapter->HalFunc.ReadEFuse(Adapter, efuseType, _offset, _size_byte, pbuf, bPseudoTest);
}

VOID
EFUSE_GetEfuseDefinition(
	IN		PADAPTER	pAdapter,
	IN		u8		efuseType,
	IN		u8		type,
	OUT		void		*pOut,
	IN		BOOLEAN		bPseudoTest
	)
{
	pAdapter->HalFunc.EFUSEGetEfuseDefinition(pAdapter, efuseType, type, pOut, bPseudoTest);
}

/*-----------------------------------------------------------------------------
 * Function:	EFUSE_Read1Byte
 *
 * Overview:	Copy from WMAC fot EFUSE read 1 byte.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 09/23/2008 	MHC		Copy from WMAC.
 *
 *---------------------------------------------------------------------------*/
u8
EFUSE_Read1Byte(	
	IN	PADAPTER	Adapter, 
	IN	u16		Address)
{
	u8	data;
	u8	Bytetemp = {0x00};
	u8	temp = {0x00};
	u32	k=0;
	u16	contentLen=0;

	EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI , TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&contentLen, _FALSE);

	if (Address < contentLen)	//E-fuse 512Byte
	{
		//Write E-fuse Register address bit0~7
		temp = Address & 0xFF;	
		rtw_write8(Adapter, EFUSE_CTRL+1, temp);	
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+2);	
		//Write E-fuse Register address bit8~9
		temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC);	
		rtw_write8(Adapter, EFUSE_CTRL+2, temp);	

		//Write 0x30[31]=0
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
		temp = Bytetemp & 0x7F;
		rtw_write8(Adapter, EFUSE_CTRL+3, temp);

		//Wait Write-ready (0x30[31]=1)
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
		while(!(Bytetemp & 0x80))
		{				
			Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
			k++;
			if(k==1000)
			{
				k=0;
				break;
			}
		}
		data=rtw_read8(Adapter, EFUSE_CTRL);
		return data;
	}
	else
		return 0xFF;
	
}/* EFUSE_Read1Byte */

/*-----------------------------------------------------------------------------
 * Function:	EFUSE_Write1Byte
 *
 * Overview:	Copy from WMAC fot EFUSE write 1 byte.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 09/23/2008 	MHC		Copy from WMAC.
 *
 *---------------------------------------------------------------------------*/

void	
EFUSE_Write1Byte(	
	IN	PADAPTER	Adapter, 
	IN	u16		Address,
	IN	u8		Value);
void	
EFUSE_Write1Byte(	
	IN	PADAPTER	Adapter, 
	IN	u16		Address,
	IN	u8		Value)
{
	u8	Bytetemp = {0x00};
	u8	temp = {0x00};
	u32	k=0;
	u16	contentLen=0;

	//RT_TRACE(COMP_EFUSE, DBG_LOUD, ("Addr=%x Data =%x\n", Address, Value));
	EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI , TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&contentLen, _FALSE);

	if( Address < contentLen)	//E-fuse 512Byte
	{
		rtw_write8(Adapter, EFUSE_CTRL, Value);

		//Write E-fuse Register address bit0~7
		temp = Address & 0xFF;	
		rtw_write8(Adapter, EFUSE_CTRL+1, temp);	
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+2);	
		
		//Write E-fuse Register address bit8~9
		temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC);	
		rtw_write8(Adapter, EFUSE_CTRL+2, temp);	

		//Write 0x30[31]=1
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
		temp = Bytetemp | 0x80;
		rtw_write8(Adapter, EFUSE_CTRL+3, temp);

		//Wait Write-ready (0x30[31]=0)
		Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
		while(Bytetemp & 0x80)
		{
			Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);			
			k++;
			if(k==100)
			{
				k=0;
				break;
			}
		}
	}
}/* EFUSE_Write1Byte */


/*  11/16/2008 MH Read one byte from real Efuse. */
u8
efuse_OneByteRead(
	IN	PADAPTER	pAdapter, 
	IN	u16			addr,
	IN	u8			*data,
	IN	BOOLEAN		bPseudoTest)
{
	u32	tmpidx = 0;
	u8	bResult;
	u8	readbyte;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(pAdapter);
	
	//DBG_871X("===> EFUSE_OneByteRead(), addr = %x\n", addr);
	//DBG_871X("===> EFUSE_OneByteRead() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST));

	if(bPseudoTest)
	{
		bResult = Efuse_Read1ByteFromFakeContent(pAdapter, addr, data);
		return bResult;
	}
	
	if(	IS_HARDWARE_TYPE_8723B(pAdapter) ||
		(IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->VersionID))) ||
		(IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->VersionID))
	  )
	{
		// <20130121, Kordan> For SMIC EFUSE specificatoin.
		//0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8])	
		//PHY_SetMacReg(pAdapter, 0x34, BIT11, 0);
		rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter,0x34)& (~BIT11) ); 
	}

	// -----------------e-fuse reg ctrl ---------------------------------
	//address			
	rtw_write8(pAdapter, EFUSE_CTRL+1, (u8)(addr&0xff));		
	rtw_write8(pAdapter, EFUSE_CTRL+2, ((u8)((addr>>8) &0x03) ) |
	(rtw_read8(pAdapter, EFUSE_CTRL+2)&0xFC ));	

	//rtw_write8(pAdapter, EFUSE_CTRL+3,  0x72);//read cmd	
	//Write bit 32 0
	readbyte = rtw_read8(pAdapter, EFUSE_CTRL+3);		
	rtw_write8(pAdapter, EFUSE_CTRL+3, (readbyte & 0x7f));

	while(!(0x80 &rtw_read8(pAdapter, EFUSE_CTRL+3))&&(tmpidx<1000))
	{
		rtw_mdelay_os(1);
		tmpidx++;
	}
	if(tmpidx<100)
	{			
		*data=rtw_read8(pAdapter, EFUSE_CTRL);		
		bResult = _TRUE;
	}
	else
	{
		*data = 0xff;	
		bResult = _FALSE;
		DBG_871X("%s: [ERROR] addr=0x%x bResult=%d time out 1s !!!\n", __FUNCTION__, addr, bResult);
		DBG_871X("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
	}

	return bResult;
}
		
/*  11/16/2008 MH Write one byte to reald Efuse. */
u8
efuse_OneByteWrite(
	IN	PADAPTER	pAdapter,  
	IN	u16			addr, 
	IN	u8			data,
	IN	BOOLEAN		bPseudoTest)
{
	u8	tmpidx = 0;
	u8	bResult=_FALSE;
	u32 efuseValue = 0;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(pAdapter);
	
	//DBG_871X("===> EFUSE_OneByteWrite(), addr = %x data=%x\n", addr, data);
	//DBG_871X("===> EFUSE_OneByteWrite() start, 0x34 = 0x%X\n", rtw_read32(pAdapter, EFUSE_TEST));

	if(bPseudoTest)
	{
		bResult = Efuse_Write1ByteToFakeContent(pAdapter, addr, data);
		return bResult;
	}


	// -----------------e-fuse reg ctrl ---------------------------------	
	//address			

	
	efuseValue = rtw_read32(pAdapter, EFUSE_CTRL);
	efuseValue |= (BIT21|BIT31);
	efuseValue &= ~(0x3FFFF);
	efuseValue |= ((addr<<8 | data) & 0x3FFFF);

	// <20130227, Kordan> 8192E MP chip A-cut had better not set 0x34[11] until B-Cut.
	if (	IS_HARDWARE_TYPE_8723B(pAdapter) ||
		(IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->VersionID))) ||
		(IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->VersionID))
		) {
		// <20130121, Kordan> For SMIC EFUSE specificatoin.
		//0x34[11]: SW force PGMEN input of efuse to high. (for the bank selected by 0x34[9:8])
		//PHY_SetMacReg(pAdapter, 0x34, BIT11, 1);
		rtw_write16(pAdapter, 0x34, rtw_read16(pAdapter,0x34)| (BIT11) );
		rtw_write32(pAdapter, EFUSE_CTRL, 0x90600000|((addr<<8 | data)) );
	}
	else
	{
		rtw_write32(pAdapter, EFUSE_CTRL, efuseValue);
	}

	while((0x80 &  rtw_read8(pAdapter, EFUSE_CTRL+3)) && (tmpidx<100) ){
		rtw_mdelay_os(1);
		tmpidx++;
	}

	if(tmpidx<100)
	{
		bResult = _TRUE;
	}
	else
	{
		bResult = _FALSE;
		DBG_871X("%s: [ERROR] addr=0x%x ,efuseValue=0x%x ,bResult=%d time out 1s !!! \n",
					__FUNCTION__, addr, efuseValue, bResult);
		DBG_871X("%s: [ERROR] EFUSE_CTRL =0x%08x !!!\n", __FUNCTION__, rtw_read32(pAdapter, EFUSE_CTRL));
	}

	// disable Efuse program enable
	if (	IS_HARDWARE_TYPE_8723B(pAdapter) ||
		(IS_HARDWARE_TYPE_8192E(pAdapter) && (!IS_A_CUT(pHalData->VersionID))) ||
		(IS_VENDOR_8188E_I_CUT_SERIES(pAdapter)) || (IS_CHIP_VENDOR_SMIC(pHalData->VersionID))
		) {
		PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT(11), 0);
	}

	return bResult;
}

int
Efuse_PgPacketRead(	IN	PADAPTER	pAdapter,
					IN	u8			offset,
					IN	u8			*data,
					IN	BOOLEAN		bPseudoTest)
{
	int	ret=0;

	ret =  pAdapter->HalFunc.Efuse_PgPacketRead(pAdapter, offset, data, bPseudoTest);

	return ret;
}

int 
Efuse_PgPacketWrite(IN	PADAPTER	pAdapter, 
					IN	u8 			offset,
					IN	u8			word_en,
					IN	u8			*data,
					IN	BOOLEAN		bPseudoTest)
{
	int ret;

	ret =  pAdapter->HalFunc.Efuse_PgPacketWrite(pAdapter, offset, word_en, data, bPseudoTest);

	return ret;
}


int 
Efuse_PgPacketWrite_BT(IN	PADAPTER	pAdapter, 
					IN	u8 			offset,
					IN	u8			word_en,
					IN	u8			*data,
					IN	BOOLEAN		bPseudoTest)
{
	int ret;

	ret =  pAdapter->HalFunc.Efuse_PgPacketWrite_BT(pAdapter, offset, word_en, data, bPseudoTest);

	return ret;
}

/*-----------------------------------------------------------------------------
 * Function:	efuse_WordEnableDataRead
 *
 * Overview:	Read allowed word in current efuse section data.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/16/2008 	MHC		Create Version 0.
 * 11/21/2008 	MHC		Fix Write bug when we only enable late word.
 *
 *---------------------------------------------------------------------------*/
void
efuse_WordEnableDataRead(IN	u8	word_en,
							IN	u8	*sourdata,
							IN	u8	*targetdata)
{	
	if (!(word_en&BIT(0)))
	{
		targetdata[0] = sourdata[0];
		targetdata[1] = sourdata[1];
	}
	if (!(word_en&BIT(1)))
	{
		targetdata[2] = sourdata[2];
		targetdata[3] = sourdata[3];
	}
	if (!(word_en&BIT(2)))
	{
		targetdata[4] = sourdata[4];
		targetdata[5] = sourdata[5];
	}
	if (!(word_en&BIT(3)))
	{
		targetdata[6] = sourdata[6];
		targetdata[7] = sourdata[7];
	}
}


u8
Efuse_WordEnableDataWrite(	IN	PADAPTER	pAdapter,
							IN	u16		efuse_addr,
							IN	u8		word_en, 
							IN	u8		*data,
							IN	BOOLEAN		bPseudoTest)
{
	u8	ret=0;

	ret =  pAdapter->HalFunc.Efuse_WordEnableDataWrite(pAdapter, efuse_addr, word_en, data, bPseudoTest);
	
	return ret;
}

static u8 efuse_read8(PADAPTER padapter, u16 address, u8 *value)
{
	return efuse_OneByteRead(padapter,address, value, _FALSE);
}

static u8 efuse_write8(PADAPTER padapter, u16 address, u8 *value)
{
	return efuse_OneByteWrite(padapter,address, *value, _FALSE);
}

/*
 * read/wirte raw efuse data
 */
u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 *data)
{
	int i = 0;
	u16	real_content_len = 0, max_available_size = 0;
	u8 res = _FAIL ;
	u8 (*rw8)(PADAPTER, u16, u8*);

	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);

	if (start_addr > real_content_len)
		return _FAIL;

	if (_TRUE == bWrite) {
		if ((start_addr + cnts) > max_available_size)
			return _FAIL;
		rw8 = &efuse_write8;
	} else
		rw8 = &efuse_read8;

	Efuse_PowerSwitch(padapter, bWrite, _TRUE);

	// e-fuse one byte read / write
	for (i = 0; i < cnts; i++) {
		if (start_addr >= real_content_len) {
			res = _FAIL;
			break;
		}

		res = rw8(padapter, start_addr++, data++);
		if (_FAIL == res) break;
	}

	Efuse_PowerSwitch(padapter, bWrite, _FALSE);

	return res;
}
//------------------------------------------------------------------------------
u16 efuse_GetMaxSize(PADAPTER padapter)
{
	u16	max_size;

	max_size = 0;
	EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE);
	return max_size;
}
//------------------------------------------------------------------------------
u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size)
{
	Efuse_PowerSwitch(padapter, _FALSE, _TRUE);
	*size = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE);
	Efuse_PowerSwitch(padapter, _FALSE, _FALSE);

	return _SUCCESS;
}
//------------------------------------------------------------------------------
u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
{
	u16	mapLen=0;

	EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);

	if ((addr + cnts) > mapLen)
		return _FAIL;

	Efuse_PowerSwitch(padapter, _FALSE, _TRUE);

	efuse_ReadEFuse(padapter, EFUSE_WIFI, addr, cnts, data, _FALSE);

	Efuse_PowerSwitch(padapter, _FALSE, _FALSE);

	return _SUCCESS;
}

u8 rtw_BT_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
{
	u16	mapLen=0;

	EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);

	if ((addr + cnts) > mapLen)
		return _FAIL;

	Efuse_PowerSwitch(padapter, _FALSE, _TRUE);

	efuse_ReadEFuse(padapter, EFUSE_BT, addr, cnts, data, _FALSE);

	Efuse_PowerSwitch(padapter, _FALSE, _FALSE);

	return _SUCCESS;
}

BOOLEAN rtw_file_efuse_IsMasked(
	PADAPTER	pAdapter,
	u16		Offset
	)
{
	int r = Offset/16;
	int c = (Offset%16) / 2;
	int result = 0;
	
	if(pAdapter->registrypriv.boffefusemask)
		return FALSE;

	//DBG_871X(" %s ,Offset=%x r= %d , c=%d , maskfileBuffer[r]= %x \n",__func__,Offset,r,c,maskfileBuffer[r]);
	if (c < 4) // Upper double word
	    result = (maskfileBuffer[r] & (0x10 << c));
	else
	    result = (maskfileBuffer[r] & (0x01 << (c-4)));
	
	return (result > 0) ? 0 : 1;

}


u8 rtw_efuse_file_read(PADAPTER padapter,u8 *filepatch,u8 *buf,u32 len)
{
	char *ptmp;
	char *ptmpbuf=NULL;
	u32 rtStatus;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(padapter);

	ptmpbuf = rtw_zmalloc(2048);

	if (ptmpbuf == NULL)
		return _FALSE;

	_rtw_memset(ptmpbuf,'\0',2048);
	
	rtStatus = rtw_retrieve_from_file(filepatch, ptmpbuf, 2048);

	if( rtStatus > 100 )
	{
		u32 i,j;
		for(i=0,j=0;j<len;i+=2,j++)
		{
			if (( ptmpbuf[i] == ' ' ) && (ptmpbuf[i+1] != '\n' && ptmpbuf[i+1] != '\0')) {
				i++;
			}
			if( (ptmpbuf[i+1] != '\n' && ptmpbuf[i+1] != '\0'))
			{
					buf[j] = simple_strtoul(&ptmpbuf[i],&ptmp, 16);
					DBG_871X(" i=%d,j=%d, %x \n",i,j,buf[j]);

			} else {
				j--;
			}
			
		}

	} else {
		DBG_871X(" %s ,filepatch %s , FAIL %d\n", __func__, filepatch, rtStatus);
		return _FALSE;
	}
	rtw_mfree(ptmpbuf, 2048);
	DBG_871X(" %s ,filepatch %s , done %d\n", __func__, filepatch, rtStatus);
	return _TRUE;
}


BOOLEAN 
efuse_IsMasked(
	PADAPTER	pAdapter,
	u16		Offset
	)
{
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(pAdapter);
	

	//if (bEfuseMaskOFF(pAdapter))
	if(pAdapter->registrypriv.boffefusemask)
		return FALSE;
		
#if DEV_BUS_TYPE == RT_USB_INTERFACE
#if defined(CONFIG_RTL8188E)
	if (IS_HARDWARE_TYPE_8188E(pAdapter))  
		return (IS_MASKED(8188E,_MUSB,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8812A)
	if (IS_HARDWARE_TYPE_8812(pAdapter))  
		return (IS_MASKED(8812A,_MUSB,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8821A)
	//if (IS_HARDWARE_TYPE_8811AU(pAdapter))  
	//	return (IS_MASKED(8811A,_MUSB,Offset)) ? TRUE : FALSE;
	if (IS_HARDWARE_TYPE_8821(pAdapter))  
		return (IS_MASKED(8821A,_MUSB,Offset)) ? TRUE : FALSE;		
#endif		
#if defined(CONFIG_RTL8192E)
	if (IS_HARDWARE_TYPE_8192E(pAdapter))  
		return (IS_MASKED(8192E,_MUSB,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8723B)
	if (IS_HARDWARE_TYPE_8723B(pAdapter))  
		return (IS_MASKED(8723B,_MUSB,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8703B)
	if (IS_HARDWARE_TYPE_8703B(pAdapter))
		return (IS_MASKED(8703B, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8814A)
	if (IS_HARDWARE_TYPE_8814A(pAdapter))
		return (IS_MASKED(8814A, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8188F)
	if (IS_HARDWARE_TYPE_8188F(pAdapter))
		return (IS_MASKED(8188F, _MUSB, Offset)) ? TRUE : FALSE;
#endif
#elif DEV_BUS_TYPE == RT_PCI_INTERFACE
#if defined(CONFIG_RTL8188E)
	if (IS_HARDWARE_TYPE_8188E(pAdapter))  
		return (IS_MASKED(8188E,_MPCIE,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8192E)
   	if (IS_HARDWARE_TYPE_8192E(pAdapter))	
		return (IS_MASKED(8192E,_MPCIE,Offset)) ? TRUE : FALSE;
#endif	
#if defined(CONFIG_RTL8812A)
	if (IS_HARDWARE_TYPE_8812(pAdapter))  
		return (IS_MASKED(8812A,_MPCIE,Offset)) ? TRUE : FALSE;
#endif	
#if defined(CONFIG_RTL8821A)
	if (IS_HARDWARE_TYPE_8821(pAdapter))  
		return (IS_MASKED(8821A,_MPCIE,Offset)) ? TRUE : FALSE;
#endif
#if defined(CONFIG_RTL8723B)
	if (IS_HARDWARE_TYPE_8723B(pAdapter))  
		return (IS_MASKED(8723B,_MPCIE,Offset)) ? TRUE : FALSE; 
#endif
#if defined(CONFIG_RTL8814A)
	if (IS_HARDWARE_TYPE_8814A(pAdapter))
		return (IS_MASKED(8814A, _MPCIE, Offset)) ? TRUE : FALSE;
#endif
	//else if (IS_HARDWARE_TYPE_8821B(pAdapter))  
	//	return (IS_MASKED(8821B,_MPCIE,Offset)) ? TRUE : FALSE; 

#elif DEV_BUS_TYPE == RT_SDIO_INTERFACE
#ifdef CONFIG_RTL8188E_SDIO
	if (IS_HARDWARE_TYPE_8188E(pAdapter))  
		return (IS_MASKED(8188E,_MSDIO,Offset)) ? TRUE : FALSE;
#endif
#ifdef CONFIG_RTL8188F_SDIO
	if (IS_HARDWARE_TYPE_8188F(pAdapter))  
		return (IS_MASKED(8188F, _MSDIO, Offset)) ? TRUE : FALSE;
#endif
#endif

	return FALSE;	
}

//------------------------------------------------------------------------------
u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
{
#define RT_ASSERT_RET(expr)												\
	if(!(expr)) {															\
		printk( "Assertion failed! %s at ......\n", #expr);							\
		printk( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);	\
		return _FAIL;	\
	}

	u8	offset, word_en;
	u8	*map;
	u8	newdata[PGPKT_DATA_SIZE];
	s32	i, j, idx;
	u8	ret = _SUCCESS;
	u16	mapLen=0;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(padapter);

	EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);

	if ((addr + cnts) > mapLen)
		return _FAIL;

	RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); // have to be 8 byte alignment
	RT_ASSERT_RET((mapLen & 0x7) == 0); // have to be PGPKT_DATA_SIZE alignment for memcpy

	map = rtw_zmalloc(mapLen);
	if(map == NULL){
		return _FAIL;
	}
	
	_rtw_memset(map, 0xFF, mapLen);
	
	ret = rtw_efuse_map_read(padapter, 0, mapLen, map);
	if (ret == _FAIL) goto exit;

	if(padapter->registrypriv.boffefusemask==0)
	{
		for (i =0; i < cnts; i++)
		{ 
			if(padapter->registrypriv.bFileMaskEfuse==_TRUE)
			{
				if (rtw_file_efuse_IsMasked(padapter, addr+i))	/*use file efuse mask. */
						data[i] = map[addr+i];
			}
			else
			{
				if ( efuse_IsMasked(padapter, addr+i ))
						data[i] = map[addr+i];
			}
			DBG_8192C("%s , data[%d] = %x, map[addr+i]= %x\n", __func__, i, data[i], map[addr+i]);
		}
	}
	Efuse_PowerSwitch(padapter, _TRUE, _TRUE);

	idx = 0;
	offset = (addr >> 3);
	while (idx < cnts)
	{
		word_en = 0xF;
		j = (addr + idx) & 0x7;
		_rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
		for (i = j; i<PGPKT_DATA_SIZE && idx < cnts; i++, idx++)
		{
			if (data[idx] != map[addr + idx])
			{
				word_en &= ~BIT(i >> 1);
				newdata[i] = data[idx];
#ifdef CONFIG_RTL8723B					
				 if( addr + idx == 0x8)
				 {	
					if (IS_C_CUT(pHalData->VersionID) || IS_B_CUT(pHalData->VersionID))
					{
						if(pHalData->adjuseVoltageVal == 6)
						{
								newdata[i] = map[addr + idx];
							 	DBG_8192C(" %s ,\n adjuseVoltageVal = %d ,newdata[%d] = %x \n",__func__,pHalData->adjuseVoltageVal,i,newdata[i]);	 
						}
					}
				  }
#endif
			}
		}

		if (word_en != 0xF) {
			ret = Efuse_PgPacketWrite(padapter, offset, word_en, newdata, _FALSE);
			DBG_871X("offset=%x \n",offset);
			DBG_871X("word_en=%x \n",word_en);

			for(i=0;i<PGPKT_DATA_SIZE;i++)
			{
				DBG_871X("data=%x \t",newdata[i]);
			}
			if (ret == _FAIL) break;
		}

		offset++;
	}

	Efuse_PowerSwitch(padapter, _TRUE, _FALSE);

exit:

	rtw_mfree(map, mapLen);

	return ret;
}

u8 rtw_efuse_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
{
	u8	ret = _SUCCESS;
	u16	mapLen = 0, i = 0;
	
	EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);
	
	ret = rtw_efuse_map_read(padapter, addr, cnts , data);

	if (padapter->registrypriv.boffefusemask == 0) {

			for (i = 0; i < cnts; i++) { 
				if (padapter->registrypriv.bFileMaskEfuse == _TRUE) {
					if (rtw_file_efuse_IsMasked(padapter, addr+i)) /*use file efuse mask.*/ 
							data[i] = 0xff;
				} else {
					/*DBG_8192C(" %s , data[%d] = %x\n", __func__, i, data[i]);*/
					if (efuse_IsMasked(padapter, addr+i)) {
						data[i] = 0xff;
						/*DBG_8192C(" %s ,mask data[%d] = %x\n", __func__, i, data[i]);*/
					}
				}
			}
	
	}
	return ret;

}

u8 rtw_BT_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
{
#define RT_ASSERT_RET(expr)												\
	if(!(expr)) {															\
		printk( "Assertion failed! %s at ......\n", #expr);							\
		printk( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);	\
		return _FAIL;	\
	}

	u8	offset, word_en;
	u8	*map;
	u8	newdata[PGPKT_DATA_SIZE];
	s32	i=0, j=0, idx;
	u8	ret = _SUCCESS;
	u16	mapLen=0;

	EFUSE_GetEfuseDefinition(padapter, EFUSE_BT, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE);

	if ((addr + cnts) > mapLen)
		return _FAIL;

	RT_ASSERT_RET(PGPKT_DATA_SIZE == 8); // have to be 8 byte alignment
	RT_ASSERT_RET((mapLen & 0x7) == 0); // have to be PGPKT_DATA_SIZE alignment for memcpy

	map = rtw_zmalloc(mapLen);
	if(map == NULL){
		return _FAIL;
	}

	ret = rtw_BT_efuse_map_read(padapter, 0, mapLen, map);
	if (ret == _FAIL) goto exit;
	DBG_871X("OFFSET\tVALUE(hex)\n");
	for (i=0; i<1024; i+=16) // set 512 because the iwpriv's extra size have limit 0x7FF
	{
			DBG_871X("0x%03x\t", i);
			for (j=0; j<8; j++) {
				DBG_871X("%02X ", map[i+j]);
			}
			DBG_871X("\t");
			for (; j<16; j++) {
				DBG_871X("%02X ", map[i+j]);
			}
			DBG_871X("\n");
	}
	DBG_871X("\n");
	Efuse_PowerSwitch(padapter, _TRUE, _TRUE);

	idx = 0;
	offset = (addr >> 3);
	while (idx < cnts)
	{
		word_en = 0xF;
		j = (addr + idx) & 0x7;
		_rtw_memcpy(newdata, &map[offset << 3], PGPKT_DATA_SIZE);
		for (i = j; i<PGPKT_DATA_SIZE && idx < cnts; i++, idx++)
		{
			if (data[idx] != map[addr + idx])
			{
				word_en &= ~BIT(i >> 1);
				newdata[i] = data[idx];
			}
		}

		if (word_en != 0xF) {
			DBG_871X("offset=%x \n",offset);
			DBG_871X("word_en=%x \n",word_en);
			DBG_871X("%s: data=", __FUNCTION__);
			for(i=0;i<PGPKT_DATA_SIZE;i++)
			{
				DBG_871X("0x%02X ", newdata[i]);
			}
			DBG_871X("\n");
			ret = Efuse_PgPacketWrite_BT(padapter, offset, word_en, newdata, _FALSE);
			if (ret == _FAIL) break;
		}

		offset++;
	}

	Efuse_PowerSwitch(padapter, _TRUE, _FALSE);

exit:

	rtw_mfree(map, mapLen);

	return ret;
}

/*-----------------------------------------------------------------------------
 * Function:	Efuse_ReadAllMap
 *
 * Overview:	Read All Efuse content
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/11/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
VOID 
Efuse_ReadAllMap(
	IN		PADAPTER	pAdapter, 
	IN		u8		efuseType,
	IN OUT	u8		*Efuse,
	IN		BOOLEAN		bPseudoTest);
VOID 
Efuse_ReadAllMap(
	IN		PADAPTER	pAdapter, 
	IN		u8		efuseType,
	IN OUT	u8		*Efuse,
	IN		BOOLEAN		bPseudoTest)
{
	u16	mapLen=0;

	Efuse_PowerSwitch(pAdapter,_FALSE, _TRUE);

	EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);

	efuse_ReadEFuse(pAdapter, efuseType, 0, mapLen, Efuse, bPseudoTest);

	Efuse_PowerSwitch(pAdapter,_FALSE, _FALSE);
}

/*-----------------------------------------------------------------------------
 * Function:	efuse_ShadowRead1Byte
 *			efuse_ShadowRead2Byte
 *			efuse_ShadowRead4Byte
 *
 * Overview:	Read from efuse init map by one/two/four bytes !!!!!
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/12/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
static VOID
efuse_ShadowRead1Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN OUT	u8		*Value)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);

	*Value = pHalData->efuse_eeprom_data[Offset];

}	// EFUSE_ShadowRead1Byte

//---------------Read Two Bytes
static VOID
efuse_ShadowRead2Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN OUT	u16		*Value)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);

	*Value = pHalData->efuse_eeprom_data[Offset];
	*Value |= pHalData->efuse_eeprom_data[Offset+1]<<8;

}	// EFUSE_ShadowRead2Byte

//---------------Read Four Bytes
static VOID
efuse_ShadowRead4Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN OUT	u32		*Value)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);

	*Value = pHalData->efuse_eeprom_data[Offset];
	*Value |= pHalData->efuse_eeprom_data[Offset+1]<<8;
	*Value |= pHalData->efuse_eeprom_data[Offset+2]<<16;
	*Value |= pHalData->efuse_eeprom_data[Offset+3]<<24;

}	// efuse_ShadowRead4Byte


/*-----------------------------------------------------------------------------
 * Function:	efuse_ShadowWrite1Byte
 *			efuse_ShadowWrite2Byte
 *			efuse_ShadowWrite4Byte
 *
 * Overview:	Write efuse modify map by one/two/four byte.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/12/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
#ifdef PLATFORM
static VOID
efuse_ShadowWrite1Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN 	u8		Value);
#endif //PLATFORM
static VOID
efuse_ShadowWrite1Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN 	u8		Value)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);

	pHalData->efuse_eeprom_data[Offset] = Value;

}	// efuse_ShadowWrite1Byte

//---------------Write Two Bytes
static VOID
efuse_ShadowWrite2Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN 	u16		Value)
{
	
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
	

	pHalData->efuse_eeprom_data[Offset] = Value&0x00FF;
	pHalData->efuse_eeprom_data[Offset+1] = Value>>8;

}	// efuse_ShadowWrite1Byte

//---------------Write Four Bytes
static VOID
efuse_ShadowWrite4Byte(
	IN	PADAPTER	pAdapter,
	IN	u16		Offset,
	IN	u32		Value)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);

	pHalData->efuse_eeprom_data[Offset] = (u8)(Value&0x000000FF);
	pHalData->efuse_eeprom_data[Offset+1] = (u8)((Value>>8)&0x0000FF);
	pHalData->efuse_eeprom_data[Offset+2] = (u8)((Value>>16)&0x00FF);
	pHalData->efuse_eeprom_data[Offset+3] = (u8)((Value>>24)&0xFF);

}	// efuse_ShadowWrite1Byte

/*-----------------------------------------------------------------------------
 * Function:	EFUSE_ShadowMapUpdate
 *
 * Overview:	Transfer current EFUSE content to shadow init and modify map.
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/13/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
void EFUSE_ShadowMapUpdate(
	IN PADAPTER	pAdapter,
	IN u8		efuseType,
	IN BOOLEAN	bPseudoTest)
{
	PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter);
	u16	mapLen=0;

	EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest);

	if (pHalData->bautoload_fail_flag == _TRUE)
	{
		_rtw_memset(pHalData->efuse_eeprom_data, 0xFF, mapLen);
	}
	else
	{
		#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE			
		if(_SUCCESS != retriveAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data)) {
		#endif
		
		Efuse_ReadAllMap(pAdapter, efuseType, pHalData->efuse_eeprom_data, bPseudoTest);
		
		#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
			storeAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pHalData->efuse_eeprom_data);
		}
		#endif
	}

	//PlatformMoveMemory((PVOID)&pHalData->EfuseMap[EFUSE_MODIFY_MAP][0], 
	//(PVOID)&pHalData->EfuseMap[EFUSE_INIT_MAP][0], mapLen);
}// EFUSE_ShadowMapUpdate


/*-----------------------------------------------------------------------------
 * Function:	EFUSE_ShadowRead
 *
 * Overview:	Read from efuse init map !!!!!
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/12/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
void
EFUSE_ShadowRead(
	IN		PADAPTER	pAdapter,
	IN		u8		Type,
	IN		u16		Offset,
	IN OUT	u32		*Value	)
{
	if (Type == 1)
		efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value);
	else if (Type == 2)
		efuse_ShadowRead2Byte(pAdapter, Offset, (u16 *)Value);
	else if (Type == 4)
		efuse_ShadowRead4Byte(pAdapter, Offset, (u32 *)Value);
	
}	// EFUSE_ShadowRead

/*-----------------------------------------------------------------------------
 * Function:	EFUSE_ShadowWrite
 *
 * Overview:	Write efuse modify map for later update operation to use!!!!!
 *
 * Input:       NONE
 *
 * Output:      NONE
 *
 * Return:      NONE
 *
 * Revised History:
 * When			Who		Remark
 * 11/12/2008 	MHC		Create Version 0.
 *
 *---------------------------------------------------------------------------*/
VOID
EFUSE_ShadowWrite(
	IN	PADAPTER	pAdapter,
	IN	u8		Type,
	IN	u16		Offset,
	IN OUT	u32		Value);
VOID
EFUSE_ShadowWrite(
	IN	PADAPTER	pAdapter,
	IN	u8		Type,
	IN	u16		Offset,
	IN OUT	u32		Value)
{
#if (MP_DRIVER == 0)
	return;
#endif
	if ( pAdapter->registrypriv.mp_mode == 0)
		return;


	if (Type == 1)
		efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value);
	else if (Type == 2)
		efuse_ShadowWrite2Byte(pAdapter, Offset, (u16)Value);
	else if (Type == 4)
		efuse_ShadowWrite4Byte(pAdapter, Offset, (u32)Value);

}	// EFUSE_ShadowWrite

VOID
Efuse_InitSomeVar(
	IN		PADAPTER	pAdapter
	);
VOID
Efuse_InitSomeVar(
	IN		PADAPTER	pAdapter
	)
{
	u8 i;
	
	_rtw_memset((PVOID)&fakeEfuseContent[0], 0xff, EFUSE_MAX_HW_SIZE);
	_rtw_memset((PVOID)&fakeEfuseInitMap[0], 0xff, EFUSE_MAX_MAP_LEN);
	_rtw_memset((PVOID)&fakeEfuseModifiedMap[0], 0xff, EFUSE_MAX_MAP_LEN);

	for(i=0; i<EFUSE_MAX_BT_BANK; i++)
	{
		_rtw_memset((PVOID)&BTEfuseContent[i][0], EFUSE_MAX_HW_SIZE, 0xff);
	}
	_rtw_memset((PVOID)&BTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
	_rtw_memset((PVOID)&BTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);

	for(i=0; i<EFUSE_MAX_BT_BANK; i++)
	{
		_rtw_memset((PVOID)&fakeBTEfuseContent[i][0], 0xff, EFUSE_MAX_HW_SIZE);
	}
	_rtw_memset((PVOID)&fakeBTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
	_rtw_memset((PVOID)&fakeBTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
}

#ifdef PLATFORM_LINUX
#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
//#include <rtw_eeprom.h>

 int isAdaptorInfoFileValid(void)
{
	return _TRUE;
}

int storeAdaptorInfoFile(char *path, u8* efuse_data)
{
	int ret =_SUCCESS;

	if(path && efuse_data) {
		ret = rtw_store_to_file(path, efuse_data, EEPROM_MAX_SIZE_512);
		if(ret == EEPROM_MAX_SIZE)
			ret = _SUCCESS;
		else
			ret = _FAIL;
	} else {
		DBG_871X("%s NULL pointer\n",__FUNCTION__);
		ret =  _FAIL;
	}
	return ret;
}

int retriveAdaptorInfoFile(char *path, u8* efuse_data)
{
	int ret = _SUCCESS;
	mm_segment_t oldfs;
	struct file *fp;
	
	if(path && efuse_data) {

		ret = rtw_retrieve_from_file(path, efuse_data, EEPROM_MAX_SIZE);
		
		if(ret == EEPROM_MAX_SIZE)
			ret = _SUCCESS;
		else
			ret = _FAIL;

		#if 0
		if(isAdaptorInfoFileValid()) {	
			return 0;
		} else {
			return _FAIL;
		}
		#endif
		
	} else {
		DBG_871X("%s NULL pointer\n",__FUNCTION__);
		ret = _FAIL;
	}
	return ret;
}
#endif /* CONFIG_ADAPTOR_INFO_CACHING_FILE */

#ifdef CONFIG_EFUSE_CONFIG_FILE
u32 rtw_read_efuse_from_file(const char *path, u8 *buf)
{
	u32 i;
	u8 temp[3];
	u32 ret = _FAIL;

	struct file *fp;
	mm_segment_t fs;
	loff_t pos = 0;

	fp = filp_open(path, O_RDONLY, 0);
	if (fp == NULL || IS_ERR(fp)) {
		if (fp != NULL)
			DBG_871X_LEVEL(_drv_always_, "%s open %s fail, err:%ld\n"
				, __func__, path, PTR_ERR(fp));
		else
			DBG_871X_LEVEL(_drv_always_, "%s open %s fail, fp is NULL\n"
				, __func__, path);

		goto exit;
	}

	temp[2] = 0; /* add end of string '\0' */

	fs = get_fs();
	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)
				DBG_871X_LEVEL(_drv_err_, "%s sscanf fail\n", __func__);
			buf[i] = 0xFF;
		}
		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 */
		}
	}

	set_fs(fs);

	DBG_871X_LEVEL(_drv_always_, "efuse file: %s\n", path);
#ifdef CONFIG_DEBUG
	for (i = 0; i < HWSET_MAX_SIZE; i++) {
		if (i % 16 == 0)
			DBG_871X_SEL_NL(RTW_DBGDUMP, "0x%03x: ", i);

		DBG_871X_SEL(RTW_DBGDUMP, "%02X%s"
			, buf[i]
			, ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? "    " : " ")
		);
	}
	DBG_871X_SEL(RTW_DBGDUMP, "\n");
#endif

	ret = _SUCCESS;

exit:
	return ret;
}

u32 rtw_read_macaddr_from_file(const char *path, u8 *buf)
{
	struct file *fp;
	mm_segment_t fs;
	loff_t pos = 0;

	u8 source_addr[18];
	u8 *head, *end;
	int i;
	u32 ret = _FAIL;

	_rtw_memset(source_addr, 0, 18);

	fp = filp_open(path, O_RDONLY, 0);
	if (fp == NULL || IS_ERR(fp)) {
		if (fp != NULL)
			DBG_871X_LEVEL(_drv_always_, "%s open %s fail, err:%ld\n"
				, __func__, path, PTR_ERR(fp));
		else
			DBG_871X_LEVEL(_drv_always_, "%s open %s fail, fp is NULL\n"
				, __func__, path);

		goto exit;
	}

	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;
	for (i = 0; i < ETH_ALEN; i++) {
		while (end && (*end != ':'))
			end++;

		if (end && (*end == ':'))
			*end = '\0';

		if (sscanf(head, "%hhx", &buf[i]) != 1) {
			if (0)
				DBG_871X_LEVEL(_drv_err_, "%s sscanf fail\n", __func__);
			buf[i] = 0xFF;
		}

		if (end) {
			end++;
			head = end;
		}
	}

	set_fs(fs);

	DBG_871X_LEVEL(_drv_always_, "wifi_mac file: %s\n", path);
#ifdef CONFIG_DEBUG
	DBG_871X(MAC_FMT"\n", MAC_ARG(buf));
#endif

	ret = _SUCCESS;

exit:
	return ret;
}
#endif /* CONFIG_EFUSE_CONFIG_FILE */

#endif /* PLATFORM_LINUX */



================================================
FILE: core/rtw_ap.c
================================================
/******************************************************************************
 *
 * 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.
 *
 * 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
 *
 *
 ******************************************************************************/
#define _RTW_AP_C_

#include <drv_types.h>


#ifdef CONFIG_AP_MODE

extern unsigned char	RTW_WPA_OUI[];
extern unsigned char 	WMM_OUI[];
extern unsigned char	WPS_OUI[];
extern unsigned char	P2P_OUI[];
extern unsigned char	WFD_OUI[];

void init_mlme_ap_info(_adapter *padapter)
{
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct sta_priv *pstapriv = &padapter->stapriv;	
	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
	

	_rtw_spinlock_init(&pmlmepriv->bcn_update_lock);	

	//for ACL 
	_rtw_init_queue(&pacl_list->acl_node_q);

	//pmlmeext->bstart_bss = _FALSE;

	start_ap_mode(padapter);
}

void free_mlme_ap_info(_adapter *padapter)
{
	_irqL irqL;
	struct sta_info *psta=NULL;
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);

	//stop_ap_mode(padapter);

	pmlmepriv->update_bcn = _FALSE;
	pmlmeext->bstart_bss = _FALSE;	
	
	rtw_sta_flush(padapter, _TRUE);

	pmlmeinfo->state = _HW_STATE_NOLINK_;

	//free_assoc_sta_resources
	rtw_free_all_stainfo(padapter);

	//free bc/mc sta_info
	psta = rtw_get_bcmc_stainfo(padapter);	
	//_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);		
	rtw_free_stainfo(padapter, psta);
	//_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
	

	_rtw_spinlock_free(&pmlmepriv->bcn_update_lock);
	
}

static void update_BCNTIM(_adapter *padapter)
{
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network);
	unsigned char *pie = pnetwork_mlmeext->IEs;

/*
	//DBG_871X("%s\n", __FUNCTION__);
	
	//update TIM IE
	//if(pstapriv->tim_bitmap)
*/
	if (_TRUE) {
		u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL;
		u16 tim_bitmap_le;
		uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen;	
	
		tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);

		p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, _TIM_IE_, &tim_ielen, pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_);
		if (p != NULL && tim_ielen > 0) {
			tim_ielen += 2;
			
			premainder_ie = p + tim_ielen;

			tim_ie_offset = (sint)(p -pie);
			
			remainder_ielen = pnetwork_mlmeext->IELength - tim_ie_offset - tim_ielen;

			/*append TIM IE from dst_ie offset*/
			dst_ie = p;
		} else {
			tim_ielen = 0;

			/*calculate head_len*/
			offset = _FIXED_IE_LENGTH_;

			/* get ssid_ie len */
			p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SSID_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_));
			if (p != NULL)
				offset += tmp_len+2;

			/*get supported rates len*/
			p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_));	
			if (p !=  NULL) 
			{			
				offset += tmp_len+2;
			}

			/*DS Parameter Set IE, len=3*/
			offset += 3;

			premainder_ie = pie + offset;

			remainder_ielen = pnetwork_mlmeext->IELength - offset - tim_ielen;	

			/*append TIM IE from offset*/
			dst_ie = pie + offset;
			
		}
		
		if (remainder_ielen > 0) {
			pbackup_remainder_ie = rtw_malloc(remainder_ielen);
			if(pbackup_remainder_ie && premainder_ie)
				_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
		}		
		
		*dst_ie++=_TIM_IE_;

		if ((pstapriv->tim_bitmap&0xff00) && (pstapriv->tim_bitmap&0x00fe))			
			tim_ielen = 5;
		else
			tim_ielen = 4;

		*dst_ie++ = tim_ielen;
		
		*dst_ie++ = 0;/*DTIM count*/
		*dst_ie++ = 1;/*DTIM period*/
		
		if (pstapriv->tim_bitmap & BIT(0))/*for bc/mc frames*/
			*dst_ie++ = BIT(0);/*bitmap ctrl */
		else
			*dst_ie++ = 0;

		if (tim_ielen == 4) {
			u8 pvb = 0;
			
			if (pstapriv->tim_bitmap & 0x00fe)
				pvb = (u8)tim_bitmap_le;
			else if (pstapriv->tim_bitmap & 0xff00)			
				pvb = (u8)(tim_bitmap_le >> 8);
			else
				pvb = (u8)tim_bitmap_le;

			*dst_ie++ = pvb;
			
		} else if (tim_ielen == 5) {
			_rtw_memcpy(dst_ie, &tim_bitmap_le, 2);
			dst_ie += 2;				
		}	
		
		/*copy remainder IE*/
		if (pbackup_remainder_ie) {
			_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);

			rtw_mfree(pbackup_remainder_ie, remainder_ielen);
		}	

		offset =  (uint)(dst_ie - pie);
		pnetwork_mlmeext->IELength = offset + remainder_ielen;
	
	}
}

void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *data, u8 len)
{
	PNDIS_802_11_VARIABLE_IEs	pIE;
	u8	bmatch = _FALSE;
	u8	*pie = pnetwork->IEs;
	u8	*p=NULL, *dst_ie=NULL, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
	u32	i, offset, ielen, ie_offset, remainder_ielen = 0;

	for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;)
	{
		pIE = (PNDIS_802_11_VARIABLE_IEs)(pnetwork->IEs + i);

		if (pIE->ElementID > index)
		{
			break;
		}
		else if(pIE->ElementID == index) // already exist the same IE
		{
			p = (u8 *)pIE;
			ielen = pIE->Length;
			bmatch = _TRUE;
			break;
		}

		p = (u8 *)pIE;
		ielen = pIE->Length;
		i += (pIE->Length + 2);
	}

	if (p != NULL && ielen>0)
	{
		ielen += 2;
		
		premainder_ie = p+ielen;

		ie_offset = (sint)(p -pie);
		
		remainder_ielen = pnetwork->IELength - ie_offset - ielen;

		if(bmatch)
			dst_ie = p;
		else
			dst_ie = (p+ielen);
	}

	if(dst_ie == NULL)
		return;

	if(remainder_ielen>0)
	{
		pbackup_remainder_ie = rtw_malloc(remainder_ielen);
		if(pbackup_remainder_ie && premainder_ie)
			_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
	}

	*dst_ie++=index;
	*dst_ie++=len;

	_rtw_memcpy(dst_ie, data, len);
	dst_ie+=len;

	//copy remainder IE
	if(pbackup_remainder_ie)
	{
		_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);

		rtw_mfree(pbackup_remainder_ie, remainder_ielen);
	}

	offset =  (uint)(dst_ie - pie);
	pnetwork->IELength = offset + remainder_ielen;
}

void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index)
{
	u8 *p, *dst_ie=NULL, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
	uint offset, ielen, ie_offset, remainder_ielen = 0;
	u8	*pie = pnetwork->IEs;

	p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen, pnetwork->IELength - _FIXED_IE_LENGTH_);
	if (p != NULL && ielen>0)
	{
		ielen += 2;
		
		premainder_ie = p+ielen;

		ie_offset = (sint)(p -pie);
		
		remainder_ielen = pnetwork->IELength - ie_offset - ielen;

		dst_ie = p;
	}
	else {
		return;
	}

	if(remainder_ielen>0)
	{
		pbackup_remainder_ie = rtw_malloc(remainder_ielen);
		if(pbackup_remainder_ie && premainder_ie)
			_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
	}

	//copy remainder IE
	if(pbackup_remainder_ie)
	{
		_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);

		rtw_mfree(pbackup_remainder_ie, remainder_ielen);
	}

	offset =  (uint)(dst_ie - pie);
	pnetwork->IELength = offset + remainder_ielen;
}


u8 chk_sta_is_alive(struct sta_info *psta);
u8 chk_sta_is_alive(struct sta_info *psta)
{
	u8 ret = _FALSE;
	#ifdef DBG_EXPIRATION_CHK
	DBG_871X("sta:"MAC_FMT", rssi:%d, rx:"STA_PKTS_FMT", expire_to:%u, %s%ssq_len:%u\n"
		, MAC_ARG(psta->hwaddr)
		, psta->rssi_stat.UndecoratedSmoothedPWDB
		//, STA_RX_PKTS_ARG(psta)
		, STA_RX_PKTS_DIFF_ARG(psta)
		, psta->expire_to
		, psta->state&WIFI_SLEEP_STATE?"PS, ":""
		, psta->state&WIFI_STA_ALIVE_CHK_STATE?"SAC, ":""
		, psta->sleepq_len
	);
	#endif

	//if(sta_last_rx_pkts(psta) == sta_rx_pkts(psta))
	if((psta->sta_stats.last_rx_data_pkts + psta->sta_stats.last_rx_ctrl_pkts) == (psta->sta_stats.rx_data_pkts + psta->sta_stats.rx_ctrl_pkts))
	{
		#if 0
		if(psta->state&WIFI_SLEEP_STATE)
			ret = _TRUE;
		#endif
	}
	else
	{
		ret = _TRUE;
	}

	sta_update_last_rx_pkts(psta);

	return ret;
}

void	expire_timeout_chk(_adapter *padapter)
{
	_irqL irqL;
	_list	*phead, *plist;
	u8 updated = _FALSE;
	struct sta_info *psta=NULL;	
	struct sta_priv *pstapriv = &padapter->stapriv;
	u8 chk_alive_num = 0;
	char chk_alive_list[NUM_STA];
	int i;


	_enter_critical_bh(&pstapriv->auth_list_lock, &irqL);
	
	phead = &pstapriv->auth_list;
	plist = get_next(phead);
	
	//check auth_queue
	#ifdef DBG_EXPIRATION_CHK
	if (rtw_end_of_queue_search(phead, plist) == _FALSE) {
		DBG_871X(FUNC_NDEV_FMT" auth_list, cnt:%u\n"
			, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->auth_list_cnt);
	}
	#endif
	while ((rtw_end_of_queue_search(phead, plist)) == _FALSE)	
	{
		psta = LIST_CONTAINOR(plist, struct sta_info, auth_list);

		plist = get_next(plist);


#ifdef CONFIG_ATMEL_RC_PATCH
		if (_TRUE == _rtw_memcmp((void *)(pstapriv->atmel_rc_pattern), (void *)(psta->hwaddr), ETH_ALEN))
			continue;
		if (psta->flag_atmel_rc)
			continue;
#endif
		if(psta->expire_to>0)
		{
			psta->expire_to--;
			if (psta->expire_to == 0)
			{
				rtw_list_delete(&psta->auth_list);
				pstapriv->auth_list_cnt--;
				
				DBG_871X("auth expire %02X%02X%02X%02X%02X%02X\n",
					psta->hwaddr[0],psta->hwaddr[1],psta->hwaddr[2],psta->hwaddr[3],psta->hwaddr[4],psta->hwaddr[5]);
				
				_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
				
				//_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);	
				rtw_free_stainfo(padapter, psta);
				//_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);	
				
				_enter_critical_bh(&pstapriv->auth_list_lock, &irqL);
			}	
		}	
		
	}

	_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
	psta = NULL;
	

	_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
	
	phead = &pstapriv->asoc_list;
	plist = get_next(phead);

	//check asoc_queue
	#ifdef DBG_EXPIRATION_CHK
	if (rtw_end_of_queue_search(phead, plist) == _FALSE) {
		DBG_871X(FUNC_NDEV_FMT" asoc_list, cnt:%u\n"
			, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->asoc_list_cnt);
	}
	#endif
	while ((rtw_end_of_queue_search(phead, plist)) == _FALSE)
	{
		psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list);
		plist = get_next(plist);
#ifdef CONFIG_ATMEL_RC_PATCH
		DBG_871X("%s:%d  psta=%p, %02x,%02x||%02x,%02x  \n\n", __func__,  __LINE__,
			psta,pstapriv->atmel_rc_pattern[0], pstapriv->atmel_rc_pattern[5], psta->hwaddr[0], psta->hwaddr[5]);
		if (_TRUE == _rtw_memcmp((void *)pstapriv->atmel_rc_pattern, (void *)(psta->hwaddr), ETH_ALEN))
			continue;		
		if (psta->flag_atmel_rc)
			continue;
		DBG_871X("%s: debug line:%d \n", __func__, __LINE__);
#endif
#ifdef CONFIG_AUTO_AP_MODE
		if(psta->isrc)
			continue;
#endif
		if (chk_sta_is_alive(psta) || !psta->expire_to) {
			psta->expire_to = pstapriv->expire_to;
			psta->keep_alive_trycnt = 0;
			#ifdef CONFIG_TX_MCAST2UNI
			psta->under_exist_checking = 0;
			#endif	// CONFIG_TX_MCAST2UNI
		} else {
			psta->expire_to--;
		}

#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
#ifdef CONFIG_80211N_HT
#ifdef CONFIG_TX_MCAST2UNI
		if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) {
			// check sta by delba(addba) for 11n STA 
			// ToDo: use CCX report to check for all STAs
			//DBG_871X("asoc check by DELBA/ADDBA! (pstapriv->expire_to=%d s)(psta->expire_to=%d s), [%02x, %d]\n", pstapriv->expire_to*2, psta->expire_to*2, psta->htpriv.agg_enable_bitmap, psta->under_exist_checking);
			
				if ( psta->expire_to <= (pstapriv->expire_to - 50 ) ) {
				DBG_871X("asoc expire by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2);
				psta->under_exist_checking = 0;
				psta->expire_to = 0;
			} else if ( psta->expire_to <= (pstapriv->expire_to - 3) && (psta->under_exist_checking==0)) {
				DBG_871X("asoc check by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2);
				psta->under_exist_checking = 1;
				//tear down TX AMPDU
				send_delba(padapter, 1, psta->hwaddr);// // originator
				psta->htpriv.agg_enable_bitmap = 0x0;//reset
				psta->htpriv.candidate_tid_bitmap = 0x0;//reset
			}
		}
#endif //CONFIG_TX_MCAST2UNI
#endif //CONFIG_80211N_HT
#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK

		if (psta->expire_to <= 0)
		{
			struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;

			if (padapter->registrypriv.wifi_spec == 1)
			{
				psta->expire_to = pstapriv->expire_to;
				continue;
			}

#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
#ifdef CONFIG_80211N_HT

#define KEEP_ALIVE_TRYCNT (3)

			if(psta->keep_alive_trycnt > 0 && psta->keep_alive_trycnt <= KEEP_ALIVE_TRYCNT)
			{				
				if(psta->state & WIFI_STA_ALIVE_CHK_STATE)
					psta->state ^= WIFI_STA_ALIVE_CHK_STATE;
				else
					psta->keep_alive_trycnt = 0;
				
			}
			else if((psta->keep_alive_trycnt > KEEP_ALIVE_TRYCNT) && !(psta->state & WIFI_STA_ALIVE_CHK_STATE))
			{
				psta->keep_alive_trycnt = 0;
			}			
			if((psta->htpriv.ht_option==_TRUE) && (psta->htpriv.ampdu_enable==_TRUE)) 
			{
				uint priority = 1; //test using BK
				u8 issued=0;				
		
				//issued = (psta->htpriv.agg_enable_bitmap>>priority)&0x1;
				issued |= (psta->htpriv.candidate_tid_bitmap>>priority)&0x1;

				if(0==issued)
				{
					if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE))
					{
						psta->htpriv.candidate_tid_bitmap |= BIT((u8)priority);

						if (psta->state & WIFI_SLEEP_STATE) 
							psta->expire_to = 2; // 2x2=4 sec
						else
							psta->expire_to = 1; // 2 sec
					
						psta->state |= WIFI_STA_ALIVE_CHK_STATE;
					
						//add_ba_hdl(padapter, (u8*)paddbareq_parm);

						DBG_871X("issue addba_req to check if sta alive, keep_alive_trycnt=%d\n", psta->keep_alive_trycnt);

						issue_addba_req(padapter, psta->hwaddr, (u8)priority);
		
						_set_timer(&psta->addba_retry_timer, ADDBA_TO);
						
						psta->keep_alive_trycnt++;						

						continue;
					}			
				}					
			}
			if(psta->keep_alive_trycnt > 0 && psta->state & WIFI_STA_ALIVE_CHK_STATE)
			{
				psta->keep_alive_trycnt = 0;
				psta->state ^= WIFI_STA_ALIVE_CHK_STATE;
				DBG_871X("change to another methods to check alive if staion is at ps mode\n");
			}	
			
#endif //CONFIG_80211N_HT
#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK	
			if (psta->state & WIFI_SLEEP_STATE) {
				if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) {
					//to check if alive by another methods if staion is at ps mode.					
					psta->expire_to = pstapriv->expire_to;
					psta->state |= WIFI_STA_ALIVE_CHK_STATE;

					//DBG_871X("alive chk, sta:" MAC_FMT " is at ps mode!\n", MAC_ARG(psta->hwaddr));

					//to update bcn with tim_bitmap for this station
					pstapriv->tim_bitmap |= BIT(psta->aid);
					update_beacon(padapter, _TIM_IE_, NULL, _TRUE);

					if(!pmlmeext->active_keep_alive_check)
						continue;
				}
			}
			#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
			if (pmlmeext->active_keep_alive_check) {
				int stainfo_offset;

				stainfo_offset = rtw_stainfo_offset(pstapriv, psta);
				if (stainfo_offset_valid(stainfo_offset)) {
					chk_alive_list[chk_alive_num++] = stainfo_offset;
				}

				continue;
			}
			#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
			rtw_list_delete(&psta->asoc_list);
			pstapriv->asoc_list_cnt--;
			DBG_871X("asoc expire "MAC_FMT", state=0x%x\n", MAC_ARG(psta->hwaddr), psta->state);
			updated = ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_DEAUTH_LEAVING, _TRUE);
		}	
		else
		{
			/* TODO: Aging mechanism to digest frames in sleep_q to avoid running out of xmitframe */
			if (psta->sleepq_len > (NR_XMITFRAME/pstapriv->asoc_list_cnt)
				&& padapter->xmitpriv.free_xmitframe_cnt < ((NR_XMITFRAME/pstapriv->asoc_list_cnt)/2)
			){
				DBG_871X("%s sta:"MAC_FMT", sleepq_len:%u, free_xmitframe_cnt:%u, asoc_list_cnt:%u, clear sleep_q\n", __func__
					, MAC_ARG(psta->hwaddr)
					, psta->sleepq_len, padapter->xmitpriv.free_xmitframe_cnt, pstapriv->asoc_list_cnt);
				wakeup_sta_to_xmit(padapter, psta);
			}
		}
	}

	_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);

#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
if (chk_alive_num) {

	u8 backup_oper_channel=0;
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	/* switch to correct channel of current network  before issue keep-alive frames */
	if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) {
		backup_oper_channel = rtw_get_oper_ch(padapter);
		SelectChannel(padapter, pmlmeext->cur_channel);
	}

	/* issue null data to check sta alive*/
	for (i = 0; i < chk_alive_num; i++) {
		int ret = _FAIL;

		psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
#ifdef CONFIG_ATMEL_RC_PATCH
		if (_TRUE == _rtw_memcmp(  pstapriv->atmel_rc_pattern, psta->hwaddr, ETH_ALEN))
			continue;
		if (psta->flag_atmel_rc)
			continue;
#endif
		if(!(psta->state &_FW_LINKED))
			continue;		
	
		if (psta->state & WIFI_SLEEP_STATE)
			ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50);
		else
			ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50);

		psta->keep_alive_trycnt++;
		if (ret == _SUCCESS)
		{
			DBG_871X("asoc check, sta(" MAC_FMT ") is alive\n", MAC_ARG(psta->hwaddr));
			psta->expire_to = pstapriv->expire_to;
			psta->keep_alive_trycnt = 0;
			continue;
		}
		else if (psta->keep_alive_trycnt <= 3)
		{
			DBG_871X("ack check for asoc expire, keep_alive_trycnt=%d\n", psta->keep_alive_trycnt);
			psta->expire_to = 1;
			continue;
		}

		psta->keep_alive_trycnt = 0;
		DBG_871X("asoc expire "MAC_FMT", state=0x%x\n", MAC_ARG(psta->hwaddr), psta->state);
		_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
		if (rtw_is_list_empty(&psta->asoc_list)==_FALSE) {
			rtw_list_delete(&psta->asoc_list);
			pstapriv->asoc_list_cnt--;
			updated = ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_DEAUTH_LEAVING, _TRUE);
		}
		_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);

	}

	if (backup_oper_channel>0) /* back to the original operation channel */
		SelectChannel(padapter, backup_oper_channel);
}
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */

	associated_clients_update(padapter, updated, STA_INFO_UPDATE_ALL);
}

void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
{	
	int i;
	u8 rf_type;
	unsigned char sta_band = 0, shortGIrate = _FALSE;
	u64 tx_ra_bitmap = 0;
	struct ht_priv	*psta_ht = NULL;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;

#ifdef CONFIG_80211N_HT
	if(psta)
		psta_ht = &psta->htpriv;
	else
		return;
#endif //CONFIG_80211N_HT

	if(!(psta->state & _FW_LINKED))
		return;

#if 0//gtest
	if(get_rf_mimo_mode(padapter) == RTL8712_RF_2T2R)
	{
		//is this a 2r STA?
		if((pstat->tx_ra_bitmap & 0x0ff00000) != 0 && !(priv->pshare->has_2r_sta & BIT(pstat->aid)))
		{
			priv->pshare->has_2r_sta |= BIT(pstat->aid);
			if(rtw_read16(padapter, 0x102501f6) != 0xffff)
			{
				rtw_write16(padapter, 0x102501f6, 0xffff);
				reset_1r_sta_RA(priv, 0xffff);
				Switch_1SS_Antenna(priv, 3);
			}
		}
		else// bg or 1R STA? 
		{ 
			if((priv->pmib->dot11BssType.net_work_type & WIRELESS_11N) && pstat->ht_cap_len && priv->pshare->has_2r_sta == 0)
			{
				if(rtw_read16(padapter, 0x102501f6) != 0x7777)
				{ // MCS7 SGI
					rtw_write16(padapter, 0x102501f6,0x7777);
					reset_1r_sta_RA(priv, 0x7777);
					Switch_1SS_Antenna(priv, 2);
				}
			}
		}
		
	}

	if ((pstat->rssi_level < 1) || (pstat->rssi_level > 3)) 
	{
		if (pstat->rssi >= priv->pshare->rf_ft_var.raGoDownUpper)
			pstat->rssi_level = 1;
		else if ((pstat->rssi >= priv->pshare->rf_ft_var.raGoDown20MLower) ||
			((priv->pshare->is_40m_bw) && (pstat->ht_cap_len) &&
			(pstat->rssi >= priv->pshare->rf_ft_var.raGoDown40MLower) &&
			(pstat->ht_cap_buf.ht_cap_info & cpu_to_le16(_HTCAP_SUPPORT_CH_WDTH_))))
			pstat->rssi_level = 2;
		else
			pstat->rssi_level = 3;
	}

	// rate adaptive by rssi
	if ((priv->pmib->dot11BssType.net_work_type & WIRELESS_11N) && pstat->ht_cap_len)
	{
		if ((get_rf_mimo_mode(priv) == MIMO_1T2R) || (get_rf_mimo_mode(priv) == MIMO_1T1R))
		{
			switch (pstat->rssi_level) {
				case 1:
					pstat->tx_ra_bitmap &= 0x100f0000;
					break;
				case 2:
					pstat->tx_ra_bitmap &= 0x100ff000;
					break;
				case 3:
					if (priv->pshare->is_40m_bw)
						pstat->tx_ra_bitmap &= 0x100ff005;
					else
						pstat->tx_ra_bitmap &= 0x100ff001;

					break;
			}
		}
		else 
		{
			switch (pstat->rssi_level) {
				case 1:
					pstat->tx_ra_bitmap &= 0x1f0f0000;
					break;
				case 2:
					pstat->tx_ra_bitmap &= 0x1f0ff000;
					break;
				case 3:
					if (priv->pshare->is_40m_bw)
						pstat->tx_ra_bitmap &= 0x000ff005;
					else
						pstat->tx_ra_bitmap &= 0x000ff001;

					break;
			}

			// Don't need to mask high rates due to new rate adaptive parameters
			//if (pstat->is_broadcom_sta)		// use MCS12 as the highest rate vs. Broadcom sta
			//	pstat->tx_ra_bitmap &= 0x81ffffff;

			// NIC driver will report not supporting MCS15 and MCS14 in asoc req
			//if (pstat->is_rtl8190_sta && !pstat->is_2t_mimo_sta)
			//	pstat->tx_ra_bitmap &= 0x83ffffff;		// if Realtek 1x2 sta, don't use MCS15 and MCS14
		}
	}
	else if ((priv->pmib->dot11BssType.net_work_type & WIRELESS_11G) && isErpSta(pstat))
	{
		switch (pstat->rssi_level) {
			case 1:
				pstat->tx_ra_bitmap &= 0x00000f00;
				break;
			case 2:
				pstat->tx_ra_bitmap &= 0x00000ff0;
				break;
			case 3:
				pstat->tx_ra_bitmap &= 0x00000ff5;
				break;
		}
	}
	else 
	{
		pstat->tx_ra_bitmap &= 0x0000000d;
	}

	// disable tx short GI when station cannot rx MCS15(AP is 2T2R)
	// disable tx short GI when station cannot rx MCS7 (AP is 1T2R or 1T1R)
	// if there is only 1r STA and we are 2T2R, DO NOT mask SGI rate
	if ((!(pstat->tx_ra_bitmap & 0x8000000) && (priv->pshare->has_2r_sta > 0) && (get_rf_mimo_mode(padapter) == RTL8712_RF_2T2R)) ||
		 (!(pstat->tx_ra_bitmap & 0x80000) && (get_rf_mimo_mode(padapter) != RTL8712_RF_2T2R)))
	{
		pstat->tx_ra_bitmap &= ~BIT(28);	
	}
#endif

	rtw_hal_update_sta_rate_mask(padapter, psta);
	tx_ra_bitmap = psta->ra_mask;

	shortGIrate = query_ra_short_GI(psta);

	if ( pcur_network->Configuration.DSConfig > 14 ) {
		
		if (tx_ra_bitmap & 0xffff000)
			sta_band |= WIRELESS_11_5N ;

		if (tx_ra_bitmap & 0xff0)
			sta_band |= WIRELESS_11A;

		// 5G band
		#ifdef CONFIG_80211AC_VHT
		if (psta->vhtpriv.vht_option)  {
			sta_band = WIRELESS_11_5AC;
		}		
		#endif
		
	} else {
		if (tx_ra_bitmap & 0xffff000)
			sta_band |= WIRELESS_11_24N;

		if (tx_ra_bitmap & 0xff0)
			sta_band |= WIRELESS_11G;

		if (tx_ra_bitmap & 0x0f)
			sta_band |= WIRELESS_11B;
	}

	psta->wireless_mode = sta_band;
	psta->raid = rtw_hal_networktype_to_raid(padapter, psta);
	
	if (psta->aid < NUM_STA)
	{
		u8	arg[4] = {0};

		arg[0] = psta->mac_id;
		arg[1] = psta->raid;
		arg[2] = shortGIrate;
		arg[3] = psta->init_rate;

		DBG_871X("%s=> mac_id:%d , raid:%d , shortGIrate=%d, tx_ra_bitmap:0x%016llx, networkType:0x%02x\n", 
			__FUNCTION__, psta->mac_id, psta->raid, shortGIrate, tx_ra_bitmap, psta->wireless_mode);
			
		rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, rssi_level);
	}
	else 
	{
		DBG_871X("station aid %d exceed the max number\n", psta->aid);
	}

}

void update_bmc_sta(_adapter *padapter)
{
	_irqL	irqL;
	unsigned char	network_type;
	int supportRateNum = 0;
	u64 tx_ra_bitmap = 0;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);	
	WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;	
	struct sta_info *psta = rtw_get_bcmc_stainfo(padapter);

	if(psta)
	{
		psta->aid = 0;//default set to 0

		pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta;

		psta->qos_option = 0;
#ifdef CONFIG_80211N_HT	
		psta->htpriv.ht_option = _FALSE;
#endif //CONFIG_80211N_HT

		psta->ieee8021x_blocked = 0;

		_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));

		//psta->dot118021XPrivacy = _NO_PRIVACY_;//!!! remove it, because it has been set before this.

		//prepare for add_RATid		
		supportRateNum = rtw_get_rateset_len((u8*)&pcur_network->SupportedRates);
		network_type = rtw_check_network_type((u8*)&pcur_network->SupportedRates, supportRateNum, pcur_network->Configuration.DSConfig);
		if (IsSupportedTxCCK(network_type)) {
			network_type = WIRELESS_11B;
		}
		else if (network_type == WIRELESS_INVALID) { // error handling
			if ( pcur_network->Configuration.DSConfig > 14 )
				network_type = WIRELESS_11A;
			else
				network_type = WIRELESS_11B;
		}
		update_sta_basic_rate(psta, network_type);
		psta->wireless_mode = network_type;

		rtw_hal_update_sta_rate_mask(padapter, psta);
		tx_ra_bitmap = psta->ra_mask;

		psta->raid = rtw_hal_networktype_to_raid(padapter,psta);

		//ap mode
		rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, _TRUE);

		//if(pHalData->fw_ractrl == _TRUE)
		{
			u8	arg[4] = {0};

			arg[0] = psta->mac_id;
			arg[1] = psta->raid;
			arg[2] = 0;
			arg[3] = psta->init_rate;

			DBG_871X("%s=> mac_id:%d , raid:%d , bitmap=0x%016llx\n", 
				__FUNCTION__ , psta->mac_id, psta->raid , tx_ra_bitmap);

			rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, 0);
		}

		rtw_sta_media_status_rpt(padapter, psta, 1);

		_enter_critical_bh(&psta->lock, &irqL);
		psta->state = _FW_LINKED;
		_exit_critical_bh(&psta->lock, &irqL);

	}
	else
	{
		DBG_871X("add_RATid_bmc_sta error!\n");
	}
		
}

//notes:
//AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode 
//MAC_ID = AID+1 for sta in ap/adhoc mode 
//MAC_ID = 1 for bc/mc for sta/ap/adhoc
//MAC_ID = 0 for bssid for sta/ap/adhoc
//CAM_ID = //0~3 for default key, cmd_id=macid + 3, macid=aid+1;

void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta)
{	
	_irqL	irqL;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct security_priv *psecuritypriv = &padapter->securitypriv;
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
#ifdef CONFIG_80211N_HT
	struct ht_priv	*phtpriv_ap = &pmlmepriv->htpriv;
	struct ht_priv	*phtpriv_sta = &psta->htpriv;
#endif //CONFIG_80211N_HT
	u8	cur_ldpc_cap=0, cur_stbc_cap=0, cur_beamform_cap=0;
	//set intf_tag to if1
	//psta->intf_tag = 0;

        DBG_871X("%s\n",__FUNCTION__);

	//psta->mac_id = psta->aid+4;
	//psta->mac_id = psta->aid+1;//alloc macid when call rtw_alloc_stainfo(),
		                                       //release macid when call rtw_free_stainfo()

	//ap mode
	rtw_hal_set_odm_var(padapter,HAL_ODM_STA_INFO,psta,_TRUE);
	
	if(psecuritypriv->dot11AuthAlgrthm==dot11AuthAlgrthm_8021X)
		psta->ieee8021x_blocked = _TRUE;
	else
		psta->ieee8021x_blocked = _FALSE;
	

	//update sta's cap
	
	//ERP
	VCS_update(padapter, psta);
#ifdef CONFIG_80211N_HT	
	//HT related cap
	if(phtpriv_sta->ht_option)
	{
		//check if sta supports rx ampdu
		phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable;

		phtpriv_sta->rx_ampdu_min_spacing = (phtpriv_sta->ht_cap.ampdu_params_info&IEEE80211_HT_CAP_AMPDU_DENSITY)>>2;
	
		// bwmode
		if((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH))
		{			
			psta->bw_mode = CHANNEL_WIDTH_40;
		}
		else
		{			
			psta->bw_mode = CHANNEL_WIDTH_20;
		}

		if (psta->ht_40mhz_intolerant)
			psta->bw_mode = CHANNEL_WIDTH_20;
		
		if(pmlmeext->cur_bwmode < psta->bw_mode)
		{
			psta->bw_mode = pmlmeext->cur_bwmode;
		}

		phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;


		//check if sta support s Short GI 20M 
		if((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20))
		{
			phtpriv_sta->sgi_20m = _TRUE;
		}
		
		//check if sta support s Short GI 40M 
		if((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_40))
		{
			if(psta->bw_mode == CHANNEL_WIDTH_40) //according to psta->bw_mode
				phtpriv_sta->sgi_40m = _TRUE;
			else
				phtpriv_sta->sgi_40m = _FALSE;
		}

		psta->qos_option = _TRUE;

		// B0 Config LDPC Coding Capability
		if (TEST_FLAG(phtpriv_ap->ldpc_cap, LDPC_HT_ENABLE_TX) && 
			GET_HT_CAP_ELE_LDPC_CAP((u8 *)(&phtpriv_sta->ht_cap)))
		{
			SET_FLAG(cur_ldpc_cap, (LDPC_HT_ENABLE_TX | LDPC_HT_CAP_TX));
			DBG_871X("Enable HT Tx LDPC for STA(%d)\n",psta->aid);
		}

		// B7 B8 B9 Config STBC setting
		if (TEST_FLAG(phtpriv_ap->stbc_cap, STBC_HT_ENABLE_TX) &&
			GET_HT_CAP_ELE_RX_STBC((u8 *)(&phtpriv_sta->ht_cap)))
		{
			SET_FLAG(cur_stbc_cap, (STBC_HT_ENABLE_TX | STBC_HT_CAP_TX) );
			DBG_871X("Enable HT Tx STBC for STA(%d)\n",psta->aid);
		}

#ifdef CONFIG_BEAMFORMING
		/*Config Tx beamforming setting*/
		if (TEST_FLAG(phtpriv_ap->beamform_cap, BEAMFORMING_HT_BEAMFORMEE_ENABLE) && 
			GET_HT_CAP_TXBF_EXPLICIT_COMP_STEERING_CAP((u8 *)(&phtpriv_sta->ht_cap)))
		{
			SET_FLAG(cur_beamform_cap, BEAMFORMING_HT_BEAMFORMER_ENABLE);
			/*Shift to BEAMFORMING_HT_BEAMFORMEE_CHNL_EST_CAP*/
			SET_FLAG(cur_beamform_cap, GET_HT_CAP_TXBF_CHNL_ESTIMATION_NUM_ANTENNAS((u8 *)(&phtpriv_sta->ht_cap)) << 6);
		}

		if (TEST_FLAG(phtpriv_ap->beamform_cap, BEAMFORMING_HT_BEAMFORMER_ENABLE) &&
			GET_HT_CAP_TXBF_EXPLICIT_COMP_FEEDBACK_CAP((u8 *)(&phtpriv_sta->ht_cap)))
		{
			SET_FLAG(cur_beamform_cap, BEAMFORMING_HT_BEAMFORMEE_ENABLE);
			/*Shift to BEAMFORMING_HT_BEAMFORMER_STEER_NUM*/
			SET_FLAG(cur_beamform_cap, GET_HT_CAP_TXBF_COMP_STEERING_NUM_ANTENNAS((u8 *)(&phtpriv_sta->ht_cap)) << 4);
		}
		if (cur_beamform_cap) {
			DBG_871X("Client STA(%d) HT Beamforming Cap = 0x%02X\n", psta->aid, cur_beamform_cap);
		}
#endif /*CONFIG_BEAMFORMING*/
	}
	else
	{
		phtpriv_sta->ampdu_enable = _FALSE;
		
		phtpriv_sta->sgi_20m = _FALSE;
		phtpriv_sta->sgi_40m = _FALSE;
		psta->bw_mode = CHANNEL_WIDTH_20;
		phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
	}

	phtpriv_sta->ldpc_cap = cur_ldpc_cap;
	phtpriv_sta->stbc_cap = cur_stbc_cap;
	phtpriv_sta->beamform_cap = cur_beamform_cap;

	//Rx AMPDU
	send_delba(padapter, 0, psta->hwaddr);// recipient
	
	//TX AMPDU
	send_delba(padapter, 1, psta->hwaddr);// // originator
	phtpriv_sta->agg_enable_bitmap = 0x0;//reset
	phtpriv_sta->candidate_tid_bitmap = 0x0;//reset
#endif //CONFIG_80211N_HT

#ifdef CONFIG_80211AC_VHT
	update_sta_vht_info_apmode(padapter, psta);
#endif

	update_ldpc_stbc_cap(psta);

	//todo: init other variables
	
	_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));


	//add ratid
	//add_RATid(padapter, psta);//move to ap_sta_info_defer_update()


	_enter_critical_bh(&psta->lock, &irqL);
	psta->state |= _FW_LINKED;
	_exit_critical_bh(&psta->lock, &irqL);
	

}

static void update_ap_info(_adapter *padapter, struct sta_info *psta)
{
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;
	struct security_priv *psecuritypriv = &padapter->securitypriv;
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
#ifdef CONFIG_80211N_HT
	struct ht_priv	*phtpriv_ap = &pmlmepriv->htpriv;
#endif //CONFIG_80211N_HT

	psta->wireless_mode = pmlmeext->cur_wireless_mode;

	psta->bssratelen = rtw_get_rateset_len(pnetwork->SupportedRates);
	_rtw_memcpy(psta->bssrateset, pnetwork->SupportedRates, psta->bssratelen);

#ifdef CONFIG_80211N_HT	
	//HT related cap
	if(phtpriv_ap->ht_option)
	{
		//check if sta supports rx ampdu
		//phtpriv_ap->ampdu_enable = phtpriv_ap->ampdu_enable;

		//check if sta support s Short GI 20M
		if((phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20))
		{
			phtpriv_ap->sgi_20m = _TRUE;
		}
		//check if sta support s Short GI 40M
		if((phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_40))
		{
			phtpriv_ap->sgi_40m = _TRUE;
		}

		psta->qos_option = _TRUE;
	}
	else
	{
		phtpriv_ap->ampdu_enable = _FALSE;
		
		phtpriv_ap->sgi_20m = _FALSE;
		phtpriv_ap->sgi_40m = _FALSE;
	}

	psta->bw_mode = pmlmeext->cur_bwmode;
	phtpriv_ap->ch_offset = pmlmeext->cur_ch_offset;

	phtpriv_ap->agg_enable_bitmap = 0x0;//reset
	phtpriv_ap->candidate_tid_bitmap = 0x0;//reset

	_rtw_memcpy(&psta->htpriv, &pmlmepriv->htpriv, sizeof(struct ht_priv));

#ifdef CONFIG_80211AC_VHT
	_rtw_memcpy(&psta->vhtpriv, &pmlmepriv->vhtpriv, sizeof(struct vht_priv));
#endif //CONFIG_80211AC_VHT

#endif //CONFIG_80211N_HT

	psta->state |= WIFI_AP_STATE; /* Aries, add,fix bug of flush_cam_entry at STOP AP mode , 0724 */
}

static void rtw_set_hw_wmm_param(_adapter *padapter)
{
	u8	ACI, ACM, AIFS, ECWMin, ECWMax, aSifsTime;
	u8	acm_mask;
	u16	TXOP;
	u32	acParm, i;
	u32	edca[4], inx[4];
	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	struct xmit_priv		*pxmitpriv = &padapter->xmitpriv;
	struct registry_priv	 *pregpriv = &padapter->registrypriv;

	acm_mask = 0;

	if (IsSupported5G(pmlmeext->cur_wireless_mode) || 
		(pmlmeext->cur_wireless_mode & WIRELESS_11_24N))
		aSifsTime = 16;
	else
		aSifsTime = 10;

	if (pmlmeinfo->WMM_enable == 0) {
		padapter->mlmepriv.acm_mask = 0;

		AIFS = aSifsTime + (2 * pmlmeinfo->slotTime);

		if (pmlmeext->cur_wireless_mode & (WIRELESS_11G | WIRELESS_11A)) {
			ECWMin = 4;
			ECWMax = 10;
		} else if (pmlmeext->cur_wireless_mode & WIRELESS_11B) {
			ECWMin = 5;
			ECWMax = 10;
		} else {
			ECWMin = 4;
			ECWMax = 10;
		}

		TXOP = 0;
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acParm));
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acParm));
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acParm));

		ECWMin = 2;
		ECWMax = 3;
		TXOP = 0x2f;
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acParm));
		
	} else {
		edca[0] = edca[1] = edca[2] = edca[3] = 0;

		/*TODO:*/
		acm_mask = 0;
		padapter->mlmepriv.acm_mask = acm_mask;

		/*
		//BK
		//AIFS = AIFSN * slot time + SIFS - r2t phy delay
		*/
		AIFS = (7 * pmlmeinfo->slotTime) + aSifsTime;
		ECWMin = 4;
		ECWMax = 10;
		TXOP = 0;		
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acParm));
		edca[XMIT_BK_QUEUE] = acParm;
		DBG_871X("WMM(BK): %x\n", acParm);
		
		/* BE */
		AIFS = (3 * pmlmeinfo->slotTime) + aSifsTime;
		ECWMin = 4;
		ECWMax = 6;
		TXOP = 0;		
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acParm));
		edca[XMIT_BE_QUEUE] = acParm;
		DBG_871X("WMM(BE): %x\n", acParm);

		/* VI */
		AIFS = (1 * pmlmeinfo->slotTime) + aSifsTime;
		ECWMin = 3;
		ECWMax = 4;
		TXOP = 94;		
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acParm));
		edca[XMIT_VI_QUEUE] = acParm;
		DBG_871X("WMM(VI): %x\n", acParm);

		/* VO */
		AIFS = (1 * pmlmeinfo->slotTime) + aSifsTime;
		ECWMin = 2;
		ECWMax = 3;
		TXOP = 47;		
		acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16);
		rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acParm));
		edca[XMIT_VO_QUEUE] = acParm;
		DBG_871X("WMM(VO): %x\n", acParm);

		
		if (padapter->registrypriv.acm_method == 1)
			rtw_hal_set_hwreg(padapter, HW_VAR_ACM_CTRL, (u8 *)(&acm_mask));
		else
			padapter->mlmepriv.acm_mask = acm_mask;

		inx[0] = 0; inx[1] = 1; inx[2] = 2; inx[3] = 3;

		if (pregpriv->wifi_spec == 1) {
			u32	j, tmp, change_inx = _FALSE;

			/* entry indx: 0->vo, 1->vi, 2->be, 3->bk. */
			for (i = 0 ; i < 4 ; i++) {
				for (j = i+1 ; j < 4 ; j++) {
					/* compare CW and AIFS */
					if ((edca[j] & 0xFFFF) < (edca[i] & 0xFFFF)) {
						change_inx = _TRUE;
					} else if ((edca[j] & 0xFFFF) == (edca[i] & 0xFFFF)) {
						/* compare TXOP */
						if ((edca[j] >> 16) > (edca[i] >> 16))
							change_inx = _TRUE;
					}
				
					if (change_inx) {
						tmp = edca[i];
						edca[i] = edca[j];
						edca[j] = tmp;

						tmp = inx[i];
						inx[i] = inx[j];
						inx[j] = tmp;

						change_inx = _FALSE;
					}
				}
			}
		}

		for (i = 0 ; i < 4 ; i++) {
			pxmitpriv->wmm_para_seq[i] = inx[i];
			DBG_871X("wmm_para_seq(%d): %d\n", i, pxmitpriv->wmm_para_seq[i]);
		}
		
	}
	
}

static void update_hw_ht_param(_adapter *padapter)
{
	unsigned char		max_AMPDU_len;
	unsigned char		min_MPDU_spacing;
	struct registry_priv	 *pregpriv = &padapter->registrypriv;
	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	
	DBG_871X("%s\n", __FUNCTION__);
	

	//handle A-MPDU parameter field
	/* 	
		AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
		AMPDU_para [4:2]:Min MPDU Start Spacing	
	*/
	max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03;	
	
	min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2;	

	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_MIN_SPACE, (u8 *)(&min_MPDU_spacing));

	rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_FACTOR, (u8 *)(&max_AMPDU_len));

	//
	// Config SM Power Save setting
	//
	pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2;
	if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC)
	{
		/*u8 i;
		//update the MCS rates
		for (i = 0; i < 16; i++)
		{
			pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i];
		}*/
		DBG_871X("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__FUNCTION__);
	}

	//
	// Config current HT Protection mode.
	//
	//pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3;

}

static void rtw_ap_check_scan(_adapter *padapter)
{
	_irqL	irqL;
	_list		*plist, *phead;
	u32	delta_time, lifetime;
	struct	wlan_network	*pnetwork = NULL;
	WLAN_BSSID_EX *pbss = NULL;	
	struct	mlme_priv	*pmlmepriv = &(padapter->mlmepriv);	
	_queue	*queue	= &(pmlmepriv->scanned_queue);
	u8 do_scan = _FALSE;

	lifetime = SCANQUEUE_LIFETIME; /* 20 sec */

	_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
	phead = get_list_head(queue);
	if (rtw_end_of_queue_search(phead, get_next(phead)) == _TRUE)
		if (padapter->registrypriv.wifi_spec)
			do_scan = _TRUE;
	_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);

#ifdef CONFIG_AUTO_CHNL_SEL_NHM
	if (padapter->registrypriv.acs_auto_scan) {
		do_scan = _TRUE;
		rtw_acs_start(padapter, _TRUE);
	}
#endif
		
	if (_TRUE == do_scan) {
		DBG_871X("%s : drv scans by itself and wait_completed\n", __func__);
		rtw_drv_scan_by_self(padapter);
		rtw_scan_wait_completed(padapter);
	}
	
#ifdef CONFIG_AUTO_CHNL_SEL_NHM
	if (padapter->registrypriv.acs_auto_scan)
		rtw_acs_start(padapter, _FALSE);
#endif	
	_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);

	phead = get_list_head(queue);
	plist = get_next(phead);

	while (1) {
		
		if (rtw_end_of_queue_search(phead, plist) == _TRUE)
			break;

		pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
		
		if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->network.Configuration.DSConfig) >= 0
			&& rtw_mlme_band_check(padapter, pnetwork->network.Configuration.DSConfig) == _TRUE
			&& _TRUE == rtw_validate_ssid(&(pnetwork->network.Ssid))) {		
			delta_time = (u32) rtw_get_passing_time_ms(pnetwork->last_scanned);
			
			if (delta_time < lifetime) {

				uint ie_len = 0;	
				u8 *pbuf = NULL;
				u8 *ie = NULL;
		
				pbss = &pnetwork->network;
				ie = pbss->IEs;
		
				/*check if HT CAP INFO IE exists or not*/
				pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_CAPABILITY_IE_, &ie_len, (pbss->IELength - _BEACON_IE_OFFSET_));
				if (pbuf == NULL) {
					/* HT CAP INFO IE don't exist, it is b/g mode bss.*/
				
					if (pmlmepriv->olbc == _FALSE)
						pmlmepriv->olbc = _TRUE;

					if (pmlmepriv->olbc_ht == _FALSE)
						pmlmepriv->olbc_ht = _TRUE;
				}						
			}			
		}

		plist = get_next(plist);	
		
	}
	
	_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);

	pmlmepriv->num_sta_no_ht = 0; /* reset to 0 after ap do scanning*/
	
}

void rtw_start_bss_hdl_after_chbw_decided(_adapter *adapter)
{
	WLAN_BSSID_EX *pnetwork = &(adapter->mlmepriv.cur_network.network);
	struct sta_info *sta = NULL;

	/* update cur_wireless_mode */
	update_wireless_mode(adapter);

	/* update RRSR and RTS_INIT_RATE register after set channel and bandwidth */
	UpdateBrateTbl(adapter, pnetwork->SupportedRates);
	rtw_hal_set_hwreg(adapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates);

	/* update capability after cur_wireless_mode updated */
	update_capinfo(adapter, rtw_get_capability(pnetwork));

	/* update bc/mc sta_info */
	update_bmc_sta(adapter);

	/* update AP's sta info */
	sta = rtw_get_stainfo(&adapter->stapriv, pnetwork->MacAddress);
	if (!sta) {
		DBG_871X(FUNC_ADPT_FMT" !sta for macaddr="MAC_FMT"\n", FUNC_ADPT_ARG(adapter), MAC_ARG(pnetwork->MacAddress));
		rtw_warn_on(1);
		return;
	}

	update_ap_info(adapter, sta);
}

void start_bss_network(_adapter *padapter, struct createbss_parm *parm)
{
#define DUMP_ADAPTERS_STATUS 0

	u8 val8;
	u16 bcn_interval;
	u32	acparm;
	struct registry_priv	 *pregpriv = &padapter->registrypriv;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct security_priv* psecuritypriv=&(padapter->securitypriv);	
	WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; /* used as input */
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network);
	u8 req_ch, req_bw, req_offset;
	bool ch_setting_changed = _FALSE;
	u8 ch_to_set = 0, bw_to_set, offset_to_set;

	if (parm->req_ch == 0) {
		/* change to unspecificed ch, bw, offset, get from IE */
		goto get_cbhw_from_ie;
	} else if (parm->req_ch > 0) {
		/* change ch, bw, offset */
		req_ch = parm->req_ch;
		req_bw = parm->req_bw;
		req_offset = parm->req_offset;
		goto change_chbw;
	}

	bcn_interval = (u16)pnetwork->Configuration.BeaconPeriod;	

	//check if there is wps ie, 
	//if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd,
	//and at first time the security ie ( RSN/WPA IE) will not include in beacon.
	if(NULL == rtw_get_wps_ie(pnetwork->IEs+_FIXED_IE_LENGTH_, pnetwork->IELength-_FIXED_IE_LENGTH_, NULL, NULL))
	{
		pmlmeext->bstart_bss = _TRUE;
	}

	//todo: update wmm, ht cap
	//pmlmeinfo->WMM_enable;
	//pmlmeinfo->HT_enable;
	if(pmlmepriv->qospriv.qos_option)
		pmlmeinfo->WMM_enable = _TRUE;
#ifdef CONFIG_80211N_HT
	if(pmlmepriv->htpriv.ht_option)
	{
		pmlmeinfo->WMM_enable = _TRUE;
		pmlmeinfo->HT_enable = _TRUE;
		//pmlmeinfo->HT_info_enable = _TRUE;
		//pmlmeinfo->HT_caps_enable = _TRUE;

		update_hw_ht_param(padapter);
	}
#endif //#CONFIG_80211N_HT

#ifdef CONFIG_80211AC_VHT
	if(pmlmepriv->vhtpriv.vht_option) {
		pmlmeinfo->VHT_enable = _TRUE;
		update_hw_vht_param(padapter);
	}
#endif //CONFIG_80211AC_VHT

	if(pmlmepriv->cur_network.join_res != _TRUE) //setting only at  first time
	{
		//WEP Key will be set before this function, do not clear CAM.
		if ((psecuritypriv->dot11PrivacyAlgrthm != _WEP40_) && (psecuritypriv->dot11PrivacyAlgrthm != _WEP104_))
			flush_all_cam_entry(padapter);	//clear CAM
	}	

	//set MSR to AP_Mode		
	Set_MSR(padapter, _HW_STATE_AP_);	
		
	//Set BSSID REG
	rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pnetwork->MacAddress);

	//Set EDCA param reg
#ifdef CONFIG_CONCURRENT_MODE
	acparm = 0x005ea42b;
#else
	acparm = 0x002F3217; // VO
#endif
	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm));
	acparm = 0x005E4317; // VI
	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm));
	//acparm = 0x00105320; // BE
	acparm = 0x005ea42b;
	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm));
	acparm = 0x0000A444; // BK
	rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acparm));

	//Set Security
	val8 = (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X)? 0xcc: 0xcf;
	rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8));

	//Beacon Control related register
	rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&bcn_interval));

	rtw_hal_set_hwreg(padapter, HW_VAR_DO_IQK, NULL);

#if 0
	if(pmlmepriv->cur_network.join_res != _TRUE) //setting only at  first time
	{
		//u32 initialgain;

		//initialgain = 0x1e;


		//disable dynamic functions, such as high power, DIG
		/*rtw_phydm_ability_backup(padapter);*/
		/*rtw_phydm_func_disable_all(padapter);*/
		
		//turn on all dynamic functions	
		/* Switch_DM_Func(padapter, DYNAMIC_ALL_FUNC_ENABLE, _TRUE);*/

		/*rtw_hal_set_odm_var(padapter, HAL_ODM_INITIAL_GAIN, &initialgain, _FALSE);*/
	
	}
#endif

get_cbhw_from_ie:
	rtw_ies_get_chbw(pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)
		, pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs)
		, &req_ch, &req_bw, &req_offset);

change_chbw:
	rtw_warn_on(req_ch == 0);

	ch_setting_changed = rtw_ap_chbw_decision(padapter, req_ch, req_bw, req_offset
		, &ch_to_set, &bw_to_set, &offset_to_set);

	//let pnetwork_mlmeext == pnetwork_mlme.
	_rtw_memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length);

	rtw_start_bss_hdl_after_chbw_decided(padapter);

	#if defined(CONFIG_DFS_MASTER)
	rtw_dfs_master_status_apply(padapter, MLME_AP_STARTED);
	#endif

	if (ch_to_set != 0)
		set_channel_bwmode(padapter, ch_to_set, offset_to_set, bw_to_set);

	if (DUMP_ADAPTERS_STATUS) {
		DBG_871X(FUNC_ADPT_FMT" done\n", FUNC_ADPT_ARG(padapter));
		dump_adapters_status(RTW_DBGDUMP , adapter_to_dvobj(padapter));
	}

	if (_TRUE == pmlmeext->bstart_bss
		&& !check_fwstate(pmlmepriv, WIFI_SITE_MONITOR)
		&& !check_fwstate(pmlmepriv, WIFI_OP_CH_SWITCHING)
		#ifdef CONFIG_CONCURRENT_MODE
		&& !check_buddy_fwstate(padapter, WIFI_SITE_MONITOR)
		#endif
	) {

	       if ((pmlmepriv->olbc == _TRUE) || (pmlmepriv->olbc_ht == _TRUE)) {

			/* AP is not starting a 40 MHz BSS in presence of an 802.11g BSS. */

			pmlmepriv->ht_op_mode &= (~HT_INFO_OPERATION_MODE_OP_MODE_MASK);
			pmlmepriv->ht_op_mode |= OP_MODE_MAY_BE_LEGACY_STAS;
			update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _FALSE);
		}

		update_beacon(padapter, _TIM_IE_, NULL, _TRUE);

		#if !defined(CONFIG_INTERRUPT_BASED_TXBCN)
		#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
		/* other case will  tx beacon when bcn interrupt coming in. */
		if (send_beacon(padapter) == _FAIL)
			DBG_871X("issue_beacon, fail!\n");
		#endif 
		#endif /* !defined(CONFIG_INTERRUPT_BASED_TXBCN) */
	}

	/*Set EDCA param reg after update cur_wireless_mode & update_capinfo*/
	if (pregpriv->wifi_spec == 1)
		rtw_set_hw_wmm_param(padapter);
	
	/*pmlmeext->bstart_bss = _TRUE;*/
}

int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf,  int len)
{
	int ret=_SUCCESS;
	u8 *p;
	u8 *pHT_caps_ie=NULL;
	u8 *pHT_info_ie=NULL;
	u16 cap, ht_cap=_FALSE;
	uint ie_len = 0;
	int group_cipher, pairwise_cipher;	
	u8	channel, network_type, supportRate[NDIS_802_11_LENGTH_RATES_EX];
	int supportRateNum = 0;
	u8 OUI1[] = {0x00, 0x50, 0xf2,0x01};
	u8 wps_oui[4]={0x0,0x50,0xf2,0x04};
	u8 WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};	
	struct registry_priv *pregistrypriv = &padapter->registrypriv;	
	struct security_priv *psecuritypriv = &padapter->securitypriv;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	WLAN_BSSID_EX *pbss_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;	
	struct sta_priv *pstapriv = &padapter->stapriv;
	u8 *ie = pbss_network->IEs;
	u8 vht_cap=_FALSE;
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	u8 rf_num = 0;
	
	/* SSID */
	/* Supported rates */
	/* DS Params */
	/* WLAN_EID_COUNTRY */
	/* ERP Information element */
	/* Extended supported rates */
	/* WPA/WPA2 */
	/* Wi-Fi Wireless Multimedia Extensions */
	/* ht_capab, ht_oper */
	/* WPS IE */

	DBG_871X("%s, len=%d\n", __FUNCTION__, len);

	if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE)
		return _FAIL;


	if(len>MAX_IE_SZ)
		return _FAIL;
	
	pbss_network->IELength = len;

	_rtw_memset(ie, 0, MAX_IE_SZ);
	
	_rtw_memcpy(ie, pbuf, pbss_network->IELength);


	if(pbss_network->InfrastructureMode!=Ndis802_11APMode)
		return _FAIL;


	rtw_ap_check_scan(padapter);
	

	pbss_network->Rssi = 0;

	_rtw_memcpy(pbss_network->MacAddress, adapter_mac_addr(padapter), ETH_ALEN);
	
	//beacon interval
	p = rtw_get_beacon_interval_from_ie(ie);//ie + 8;	// 8: TimeStamp, 2: Beacon Interval 2:Capability
	//pbss_network->Configuration.BeaconPeriod = le16_to_cpu(*(unsigned short*)p);
	pbss_network->Configuration.BeaconPeriod = RTW_GET_LE16(p);
	
	//capability
	//cap = *(unsigned short *)rtw_get_capability_from_ie(ie);
	//cap = le16_to_cpu(cap);
	cap = RTW_GET_LE16(ie);

	//SSID
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SSID_IE_, &ie_len, (pbss_network->IELength -_BEACON_IE_OFFSET_));
	if(p && ie_len>0)
	{
		_rtw_memset(&pbss_network->Ssid, 0, sizeof(NDIS_802_11_SSID));
		_rtw_memcpy(pbss_network->Ssid.Ssid, (p + 2), ie_len);
		pbss_network->Ssid.SsidLength = ie_len;
		#ifdef CONFIG_P2P
		_rtw_memcpy(padapter->wdinfo.p2p_group_ssid, pbss_network->Ssid.Ssid, pbss_network->Ssid.SsidLength);
		padapter->wdinfo.p2p_group_ssid_len = pbss_network->Ssid.SsidLength;
		#endif
	}

	//chnnel
	channel = 0;
	pbss_network->Configuration.Length = 0;
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _DSSET_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
	if(p && ie_len>0)
		channel = *(p + 2);

	pbss_network->Configuration.DSConfig = channel;

	
	_rtw_memset(supportRate, 0, NDIS_802_11_LENGTH_RATES_EX);
	// get supported rates
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));	
	if (p !=  NULL) 
	{
		_rtw_memcpy(supportRate, p+2, ie_len);	
		supportRateNum = ie_len;
	}
	
	//get ext_supported rates
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _EXT_SUPPORTEDRATES_IE_, &ie_len, pbss_network->IELength - _BEACON_IE_OFFSET_);	
	if (p !=  NULL)
	{
		_rtw_memcpy(supportRate+supportRateNum, p+2, ie_len);
		supportRateNum += ie_len;
	
	}

	network_type = rtw_check_network_type(supportRate, supportRateNum, channel);

	rtw_set_supported_rate(pbss_network->SupportedRates, network_type);


	//parsing ERP_IE
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _ERPINFO_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
	if(p && ie_len>0)
	{
		ERP_IE_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)p);
	}

	//update privacy/security
	if (cap & BIT(4))
		pbss_network->Privacy = 1;
	else
		pbss_network->Privacy = 0;

	psecuritypriv->wpa_psk = 0;

	//wpa2
	group_cipher = 0; pairwise_cipher = 0;
	psecuritypriv->wpa2_group_cipher = _NO_PRIVACY_;
	psecuritypriv->wpa2_pairwise_cipher = _NO_PRIVACY_;	
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _RSN_IE_2_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));		
	if(p && ie_len>0)
	{
		if(rtw_parse_wpa2_ie(p, ie_len+2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS)
		{
			psecuritypriv->dot11AuthAlgrthm= dot11AuthAlgrthm_8021X;
			
			psecuritypriv->dot8021xalg = 1;//psk,  todo:802.1x
			psecuritypriv->wpa_psk |= BIT(1);

			psecuritypriv->wpa2_group_cipher = group_cipher;
			psecuritypriv->wpa2_pairwise_cipher = pairwise_cipher;
#if 0
			switch(group_cipher)
			{
				case WPA_CIPHER_NONE:				
				psecuritypriv->wpa2_group_cipher = _NO_PRIVACY_;
				break;
				case WPA_CIPHER_WEP40:				
				psecuritypriv->wpa2_group_cipher = _WEP40_;
				break;
				case WPA_CIPHER_TKIP:				
				psecuritypriv->wpa2_group_cipher = _TKIP_;
				break;
				case WPA_CIPHER_CCMP:				
				psecuritypriv->wpa2_group_cipher = _AES_;				
				break;
				case WPA_CIPHER_WEP104:					
				psecuritypriv->wpa2_group_cipher = _WEP104_;
				break;
			}

			switch(pairwise_cipher)
			{
				case WPA_CIPHER_NONE:			
				psecuritypriv->wpa2_pairwise_cipher = _NO_PRIVACY_;
				break;
				case WPA_CIPHER_WEP40:			
				psecuritypriv->wpa2_pairwise_cipher = _WEP40_;
				break;
				case WPA_CIPHER_TKIP:				
				psecuritypriv->wpa2_pairwise_cipher = _TKIP_;
				break;
				case WPA_CIPHER_CCMP:			
				psecuritypriv->wpa2_pairwise_cipher = _AES_;
				break;
				case WPA_CIPHER_WEP104:					
				psecuritypriv->wpa2_pairwise_cipher = _WEP104_;
				break;
			}
#endif			
		}
		
	}

	//wpa
	ie_len = 0;
	group_cipher = 0; pairwise_cipher = 0;
	psecuritypriv->wpa_group_cipher = _NO_PRIVACY_;
	psecuritypriv->wpa_pairwise_cipher = _NO_PRIVACY_;	
	for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2))
	{
		p = rtw_get_ie(p, _SSN_IE_1_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_ - (ie_len + 2)));		
		if ((p) && (_rtw_memcmp(p+2, OUI1, 4)))
		{
			if(rtw_parse_wpa_ie(p, ie_len+2, &group_cipher, &pairwise_cipher, NULL) == _SUCCESS)
			{
				psecuritypriv->dot11AuthAlgrthm= dot11AuthAlgrthm_8021X;
				
				psecuritypriv->dot8021xalg = 1;//psk,  todo:802.1x

				psecuritypriv->wpa_psk |= BIT(0);

				psecuritypriv->wpa_group_cipher = group_cipher;
				psecuritypriv->wpa_pairwise_cipher = pairwise_cipher;

#if 0
				switch(group_cipher)
				{
					case WPA_CIPHER_NONE:					
					psecuritypriv->wpa_group_cipher = _NO_PRIVACY_;
					break;
					case WPA_CIPHER_WEP40:					
					psecuritypriv->wpa_group_cipher = _WEP40_;
					break;
					case WPA_CIPHER_TKIP:					
					psecuritypriv->wpa_group_cipher = _TKIP_;
					break;
					case WPA_CIPHER_CCMP:					
					psecuritypriv->wpa_group_cipher = _AES_;				
					break;
					case WPA_CIPHER_WEP104:					
					psecuritypriv->wpa_group_cipher = _WEP104_;
					break;
				}

				switch(pairwise_cipher)
				{
					case WPA_CIPHER_NONE:					
					psecuritypriv->wpa_pairwise_cipher = _NO_PRIVACY_;
					break;
					case WPA_CIPHER_WEP40:					
					psecuritypriv->wpa_pairwise_cipher = _WEP40_;
					break;
					case WPA_CIPHER_TKIP:					
					psecuritypriv->wpa_pairwise_cipher = _TKIP_;
					break;
					case WPA_CIPHER_CCMP:					
					psecuritypriv->wpa_pairwise_cipher = _AES_;
					break;
					case WPA_CIPHER_WEP104:					
					psecuritypriv->wpa_pairwise_cipher = _WEP104_;
					break;
				}
#endif				
			}

			break;
			
		}
			
		if ((p == NULL) || (ie_len == 0))
		{
				break;
		}
		
	}

	//wmm
	ie_len = 0;
	pmlmepriv->qospriv.qos_option = 0;
	if(pregistrypriv->wmm_enable)
	{
		for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2))
		{			
			p = rtw_get_ie(p, _VENDOR_SPECIFIC_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_ - (ie_len + 2)));	
			if((p) && _rtw_memcmp(p+2, WMM_PARA_IE, 6)) 
			{
				pmlmepriv->qospriv.qos_option = 1;	

				*(p+8) |= BIT(7);//QoS Info, support U-APSD
				
				/* disable all ACM bits since the WMM admission control is not supported */
				*(p + 10) &= ~BIT(4); /* BE */
				*(p + 14) &= ~BIT(4); /* BK */
				*(p + 18) &= ~BIT(4); /* VI */
				*(p + 22) &= ~BIT(4); /* VO */
				
				break;				
			}
			
			if ((p == NULL) || (ie_len == 0))
			{
				break;
			}			
		}		
	}
#ifdef CONFIG_80211N_HT
	//parsing HT_CAP_IE
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_CAPABILITY_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
	if(p && ie_len>0)
	{
		u8 rf_type=0;
		HT_CAP_AMPDU_FACTOR max_rx_ampdu_factor=MAX_AMPDU_FACTOR_64K;
		struct rtw_ieee80211_ht_cap *pht_cap = (struct rtw_ieee80211_ht_cap *)(p+2);

		if (0) {
			DBG_871X(FUNC_ADPT_FMT" HT_CAP_IE from upper layer:\n", FUNC_ADPT_ARG(padapter));
			dump_ht_cap_ie_content(RTW_DBGDUMP, p+2, ie_len);
		}

		pHT_caps_ie=p;

		ht_cap = _TRUE;
		network_type |= WIRELESS_11_24N;

		rtw_ht_use_default_setting(padapter);

		/* Update HT Capabilities Info field */
		if (pmlmepriv->htpriv.sgi_20m == _FALSE)
			pht_cap->cap_info &= ~(IEEE80211_HT_CAP_SGI_20);

		if (pmlmepriv->htpriv.sgi_40m == _FALSE)
			pht_cap->cap_info &= ~(IEEE80211_HT_CAP_SGI_40);

		if (!TEST_FLAG(pmlmepriv->htpriv.ldpc_cap, LDPC_HT_ENABLE_RX))
		{
			pht_cap->cap_info &= ~(IEEE80211_HT_CAP_LDPC_CODING);
		}

		if (!TEST_FLAG(pmlmepriv->htpriv.stbc_cap, STBC_HT_ENABLE_TX))
		{
			pht_cap->cap_info &= ~(IEEE80211_HT_CAP_TX_STBC);
		}		

		if (!TEST_FLAG(pmlmepriv->htpriv.stbc_cap, STBC_HT_ENABLE_RX))
		{
			pht_cap->cap_info &= ~(IEEE80211_HT_CAP_RX_STBC_3R);
		}

		/* Update A-MPDU Parameters field */
		pht_cap->ampdu_params_info &= ~(IEEE80211_HT_CAP_AMPDU_FACTOR|IEEE80211_HT_CAP_AMPDU_DENSITY);

		if((psecuritypriv->wpa_pairwise_cipher & WPA_CIPHER_CCMP) ||
			(psecuritypriv->wpa2_pairwise_cipher & WPA_CIPHER_CCMP))
		{
			pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&(0x07<<2));
		}	
		else
		{
			pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&0x00);	
		}	

		rtw_hal_get_def_var(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR, &max_rx_ampdu_factor);
		pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_FACTOR & max_rx_ampdu_factor); //set  Max Rx AMPDU size  to 64K
		
		_rtw_memcpy(&(pmlmeinfo->HT_caps), pht_cap, sizeof(struct HT_caps_element));

		/* Update Supported MCS Set field */
		{
			int i;

			rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));

			/* RX MCS Bitmask */
			switch(rf_type)
			{
				case RF_1T1R:
				case RF_1T2R: //?
					set_mcs_rate_by_mask(HT_CAP_ELE_RX_MCS_MAP(pht_cap), MCS_RATE_1R);
					break;
				case RF_2T2R:
					set_mcs_rate_by_mask(HT_CAP_ELE_RX_MCS_MAP(pht_cap), MCS_RATE_2R);
					break;
				case RF_3T3R:
					set_mcs_rate_by_mask(HT_CAP_ELE_RX_MCS_MAP(pht_cap), MCS_RATE_3R);
					break;
				default:
					DBG_871X("[warning] rf_type %d is not expected\n", rf_type);
			}
			for (i = 0; i < 10; i++)
				*(HT_CAP_ELE_RX_MCS_MAP(pht_cap)+i) &= padapter->mlmeextpriv.default_supported_mcs_set[i];
		}

#ifdef CONFIG_BEAMFORMING
		// Use registry value to enable HT Beamforming.
		// ToDo: use configure file to set these capability.
		pht_cap->tx_BF_cap_info = 0;

		// HT Beamformer
		if(TEST_FLAG(pmlmepriv->htpriv.beamform_cap, BEAMFORMING_HT_BEAMFORMER_ENABLE))
		{
			// Transmit NDP Capable
			SET_HT_CAP_TXBF_TRANSMIT_NDP_CAP(pht_cap, 1);
			// Explicit Compressed Steering Capable
			SET_HT_CAP_TXBF_EXPLICIT_COMP_STEERING_CAP(pht_cap, 1);
			// Compressed Steering Number Antennas
			SET_HT_CAP_TXBF_COMP_STEERING_NUM_ANTENNAS(pht_cap, 1);
			rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMER_CAP, (u8 *)&rf_num);
			SET_HT_CAP_TXBF_CHNL_ESTIMATION_NUM_ANTENNAS(pht_cap, rf_num);		
		}

		// HT Beamformee
		if(TEST_FLAG(pmlmepriv->htpriv.beamform_cap, BEAMFORMING_HT_BEAMFORMEE_ENABLE))
		{
			// Receive NDP Capable
			SET_HT_CAP_TXBF_RECEIVE_NDP_CAP(pht_cap, 1);
			// Explicit Compressed Beamforming Feedback Capable
			SET_HT_CAP_TXBF_EXPLICIT_COMP_FEEDBACK_CAP(pht_cap, 2);
			rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMEE_CAP, (u8 *)&rf_num);
			SET_HT_CAP_TXBF_COMP_STEERING_NUM_ANTENNAS(pht_cap, rf_num);
		}
#endif //CONFIG_BEAMFORMING

		_rtw_memcpy(&pmlmepriv->htpriv.ht_cap, p+2, ie_len);

		if (0) {
			DBG_871X(FUNC_ADPT_FMT" HT_CAP_IE driver masked:\n", FUNC_ADPT_ARG(padapter));
			dump_ht_cap_ie_content(RTW_DBGDUMP, p+2, ie_len);
		}
	}

	//parsing HT_INFO_IE
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_ADD_INFO_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
	if(p && ie_len>0)
	{
		pHT_info_ie=p;
	}
#endif //CONFIG_80211N_HT
	switch(network_type)
	{
		case WIRELESS_11B:
			pbss_network->NetworkTypeInUse = Ndis802_11DS;
			break;	
		case WIRELESS_11G:
		case WIRELESS_11BG:
             case WIRELESS_11G_24N:
		case WIRELESS_11BG_24N:
			pbss_network->NetworkTypeInUse = Ndis802_11OFDM24;
			break;
		case WIRELESS_11A:
			pbss_network->NetworkTypeInUse = Ndis802_11OFDM5;
			break;
		default :
			pbss_network->NetworkTypeInUse = Ndis802_11OFDM24;
			break;
	}
	
	pmlmepriv->cur_network.network_type = network_type;

#ifdef CONFIG_80211N_HT
	pmlmepriv->htpriv.ht_option = _FALSE;

	if( (psecuritypriv->wpa2_pairwise_cipher&WPA_CIPHER_TKIP) ||
		      (psecuritypriv->wpa_pairwise_cipher&WPA_CIPHER_TKIP))
	{	
		//todo:
		//ht_cap = _FALSE;
	}
		      
	//ht_cap	
	if(pregistrypriv->ht_enable && ht_cap==_TRUE)
	{		
		pmlmepriv->htpriv.ht_option = _TRUE;
		pmlmepriv->qospriv.qos_option = 1;

		if(pregistrypriv->ampdu_enable==1)
		{
			pmlmepriv->htpriv.ampdu_enable = _TRUE;
		}

		HT_caps_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)pHT_caps_ie);
		
		HT_info_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)pHT_info_ie);
	}
#endif

#ifdef CONFIG_80211AC_VHT

	//Parsing VHT CAP IE
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, EID_VHTCapability, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
	if(p && ie_len>0)
	{	
		vht_cap = _TRUE; 
	}
	//Parsing VHT OPERATION IE
	

	pmlmepriv->vhtpriv.vht_option = _FALSE;
	// if channel in 5G band, then add vht ie .
	if ((pbss_network->Configuration.DSConfig > 14) && 
		(pmlmepriv->htpriv.ht_option == _TRUE) &&
		(pregistrypriv->vht_enable)) 
	{
		if(vht_cap == _TRUE)
		{
			pmlmepriv->vhtpriv.vht_option = _TRUE;
		}
		else if(pregistrypriv->vht_enable == 2) // auto enabled
		{
			u8	cap_len, operation_len;

			rtw_vht_use_default_setting(padapter);

			{
				/* VHT Operation mode notifiy bit in Extended IE (127) */
				uint len = 0;
				
				SET_EXT_CAPABILITY_ELE_OP_MODE_NOTIF(pmlmepriv->ext_capab_ie_data, 1);
				pmlmepriv->ext_capab_ie_len = 10;
				rtw_set_ie(pbss_network->IEs + pbss_network->IELength, EID_EXTCapability, 8, pmlmepriv->ext_capab_ie_data, &len);
				pbss_network->IELength += pmlmepriv->ext_capab_ie_len;
			}
			
			// VHT Capabilities element
			cap_len = rtw_build_vht_cap_ie(padapter, pbss_network->IEs + pbss_network->IELength);
			pbss_network->IELength += cap_len;

			// VHT Operation element
			operation_len = rtw_build_vht_operation_ie(padapter, pbss_network->IEs + pbss_network->IELength, pbss_network->Configuration.DSConfig);
			pbss_network->IELength += operation_len;

			pmlmepriv->vhtpriv.vht_option = _TRUE;
		}		
	}
#endif //CONFIG_80211AC_VHT

	pbss_network->Length = get_WLAN_BSSID_EX_sz((WLAN_BSSID_EX  *)pbss_network);

	rtw_ies_get_chbw(pbss_network->IEs + _BEACON_IE_OFFSET_, pbss_network->IELength - _BEACON_IE_OFFSET_
		, &pmlmepriv->ori_ch, &pmlmepriv->ori_bw, &pmlmepriv->ori_offset);
	rtw_warn_on(pmlmepriv->ori_ch == 0);

{
	/* alloc sta_info for ap itself */

	struct sta_info *sta;

	sta = rtw_get_stainfo(&padapter->stapriv, pbss_network->MacAddress);
	if (!sta) {
		sta = rtw_alloc_stainfo(&padapter->stapriv, pbss_network->MacAddress);
		if (sta == NULL) 
			return _FAIL;
	}
}

	rtw_startbss_cmd(padapter, RTW_CMDF_WAIT_ACK);

	rtw_indicate_connect( padapter);

	pmlmepriv->cur_network.join_res = _TRUE;//for check if already set beacon
		
	//update bc/mc sta_info
	//update_bmc_sta(padapter);

	return ret;

}

void rtw_set_macaddr_acl(_adapter *padapter, int mode)
{
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;

	DBG_871X("%s, mode=%d\n", __func__, mode);

	pacl_list->mode = mode;
}

int rtw_acl_add_sta(_adapter *padapter, u8 *addr)
{
	_irqL irqL;
	_list	*plist, *phead;
	u8 added = _FALSE;
	int i, ret=0;
	struct rtw_wlan_acl_node *paclnode;
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
	_queue	*pacl_node_q =&pacl_list->acl_node_q;	

	DBG_871X("%s(acl_num=%d)=" MAC_FMT "\n", __func__, pacl_list->num, MAC_ARG(addr));	

	if((NUM_ACL-1) < pacl_list->num)
		return (-1);	


	_enter_critical_bh(&(pacl_node_q->lock), &irqL);

	phead = get_list_head(pacl_node_q);
	plist = get_next(phead);
		
	while ((rtw_end_of_queue_search(phead, plist)) == _FALSE)
	{
		paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list);
		plist = get_next(plist);

		if(_rtw_memcmp(paclnode->addr, addr, ETH_ALEN))
		{
			if(paclnode->valid == _TRUE)
			{
				added = _TRUE;
				DBG_871X("%s, sta has been added\n", __func__);
				break;
			}
		}		
	}
	
	_exit_critical_bh(&(pacl_node_q->lock), &irqL);


	if(added == _TRUE)
		return ret;
	

	_enter_critical_bh(&(pacl_node_q->lock), &irqL);

	for(i=0; i< NUM_ACL; i++)
	{
		paclnode = &pacl_list->aclnode[i];

		if(paclnode->valid == _FALSE)
		{
			_rtw_init_listhead(&paclnode->list);
	
			_rtw_memcpy(paclnode->addr, addr, ETH_ALEN);
		
			paclnode->valid = _TRUE;

			rtw_list_insert_tail(&paclnode->list, get_list_head(pacl_node_q));
	
			pacl_list->num++;

			break;
		}
	}

	DBG_871X("%s, acl_num=%d\n", __func__, pacl_list->num);
	
	_exit_critical_bh(&(pacl_node_q->lock), &irqL);

	return ret;
}

int rtw_acl_remove_sta(_adapter *padapter, u8 *addr)
{
	_irqL irqL;
	_list	*plist, *phead;
	int i, ret=0;
	struct rtw_wlan_acl_node *paclnode;
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
	_queue	*pacl_node_q =&pacl_list->acl_node_q;
	u8 baddr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };	//Baddr is used for clearing acl_list

	DBG_871X("%s(acl_num=%d)=" MAC_FMT "\n", __func__, pacl_list->num, MAC_ARG(addr));	

	_enter_critical_bh(&(pacl_node_q->lock), &irqL);

	phead = get_list_head(pacl_node_q);
	plist = get_next(phead);
		
	while ((rtw_end_of_queue_search(phead, plist)) == _FALSE)
	{
		paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list);
		plist = get_next(plist);

		if(_rtw_memcmp(paclnode->addr, addr, ETH_ALEN) || _rtw_memcmp(baddr, addr, ETH_ALEN))
		{
			if(paclnode->valid == _TRUE)
			{
				paclnode->valid = _FALSE;

				rtw_list_delete(&paclnode->list);
				
				pacl_list->num--;
			}
		}		
	}
	
	_exit_critical_bh(&(pacl_node_q->lock), &irqL);

	DBG_871X("%s, acl_num=%d\n", __func__, pacl_list->num);
	
	return ret;

}

u8 rtw_ap_set_pairwise_key(_adapter *padapter, struct sta_info *psta)
{
	struct cmd_obj*			ph2c;
	struct set_stakey_parm	*psetstakey_para;
	struct cmd_priv 			*pcmdpriv=&padapter->cmdpriv;	
	u8	res=_SUCCESS;

	ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj));
	if ( ph2c == NULL){
		res= _FAIL;
		goto exit;
	}

	psetstakey_para = (struct set_stakey_parm*)rtw_zmalloc(sizeof(struct set_stakey_parm));
	if(psetstakey_para==NULL){
		rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj));
		res=_FAIL;
		goto exit;
	}

	init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_);


	psetstakey_para->algorithm = (u8)psta->dot118021XPrivacy;

	_rtw_memcpy(psetstakey_para->addr, psta->hwaddr, ETH_ALEN);	
	
	_rtw_memcpy(psetstakey_para->key, &psta->dot118021x_UncstKey, 16);

	
	res = rtw_enqueue_cmd(pcmdpriv, ph2c);	

exit:

	return res;
	
}

static int rtw_ap_set_key(_adapter *padapter, u8 *key, u8 alg, int keyid, u8 set_tx)
{
	u8 keylen;
	struct cmd_obj* pcmd;
	struct setkey_parm *psetkeyparm;
	struct cmd_priv	*pcmdpriv=&(padapter->cmdpriv);	
	int res=_SUCCESS;

	//DBG_871X("%s\n", __FUNCTION__);
	
	pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj));
	if(pcmd==NULL){
		res= _FAIL;
		goto exit;
	}
	psetkeyparm=(struct setkey_parm*)rtw_zmalloc(sizeof(struct setkey_parm));
	if(psetkeyparm==NULL){
		rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
		res= _FAIL;
		goto exit;
	}

	_rtw_memset(psetkeyparm, 0, sizeof(struct setkey_parm));
		
	psetkeyparm->keyid=(u8)keyid;
	if (is_wep_enc(alg))
		padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);

	psetkeyparm->algorithm = alg;

	psetkeyparm->set_tx = set_tx;

	switch(alg)
	{
		case _WEP40_:					
			keylen = 5;
			break;
		case _WEP104_:
			keylen = 13;			
			break;
		case _TKIP_:
		case _TKIP_WTMIC_:
		case _AES_:
		default:
			keylen = 16;
	}

	_rtw_memcpy(&(psetkeyparm->key[0]), key, keylen);
	
	pcmd->cmdcode = _SetKey_CMD_;
	pcmd->parmbuf = (u8 *)psetkeyparm;   
	pcmd->cmdsz =  (sizeof(struct setkey_parm));  
	pcmd->rsp = NULL;
	pcmd->rspsz = 0;


	_rtw_init_listhead(&pcmd->list);

	res = rtw_enqueue_cmd(pcmdpriv, pcmd);

exit:

	return res;
}

int rtw_ap_set_group_key(_adapter *padapter, u8 *key, u8 alg, int keyid)
{
	DBG_871X("%s\n", __FUNCTION__);

	return rtw_ap_set_key(padapter, key, alg, keyid, 1);
}

int rtw_ap_set_wep_key(_adapter *padapter, u8 *key, u8 keylen, int keyid, u8 set_tx)
{
	u8 alg;

	switch(keylen)
	{
		case 5:
			alg =_WEP40_;			
			break;
		case 13:
			alg =_WEP104_;			
			break;
		default:
			alg =_NO_PRIVACY_;			
	}

	DBG_871X("%s\n", __FUNCTION__);

	return rtw_ap_set_key(padapter, key, alg, keyid, set_tx);
}

u8 rtw_ap_bmc_frames_hdl(_adapter *padapter)
{
#define HIQ_XMIT_COUNTS (6)
	_irqL irqL;
	struct sta_info *psta_bmc;
	_list	*xmitframe_plist, *xmitframe_phead;
	struct xmit_frame *pxmitframe = NULL;
	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
	struct sta_priv  *pstapriv = &padapter->stapriv;
	bool update_tim = _FALSE;


	if (padapter->registrypriv.wifi_spec != 1)
		return H2C_SUCCESS;

	
	psta_bmc = rtw_get_bcmc_stainfo(padapter);
	if (!psta_bmc)
		return H2C_SUCCESS;


	_enter_critical_bh(&pxmitpriv->lock, &irqL);

	if ((pstapriv->tim_bitmap & BIT(0)) && (psta_bmc->sleepq_len > 0)) {
		int tx_counts = 0;
		
		_update_beacon(padapter, _TIM_IE_, NULL, _FALSE, "update TIM with TIB=1");

		DBG_871X("sleepq_len of bmc_sta = %d\n", psta_bmc->sleepq_len);

		xmitframe_phead = get_list_head(&psta_bmc->sleep_q);
		xmitframe_plist = get_next(xmitframe_phead);

		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);

			rtw_list_delete(&pxmitframe->list);

			psta_bmc->sleepq_len--;
			tx_counts++;
			
			if (psta_bmc->sleepq_len > 0)
				pxmitframe->attrib.mdata = 1;
			else
				pxmitframe->attrib.mdata = 0;

			if (tx_counts == HIQ_XMIT_COUNTS)
				pxmitframe->attrib.mdata = 0;
			
			pxmitframe->attrib.triggered = 1;

			if (xmitframe_hiq_filter(pxmitframe) == _TRUE)
				pxmitframe->attrib.qsel = QSLT_HIGH;/*HIQ*/

			rtw_hal_xmitframe_enqueue(padapter, pxmitframe);

			if (tx_counts == HIQ_XMIT_COUNTS)
				break;
			
		}

	} else {
		if (psta_bmc->sleepq_len == 0) {
			
			/*DBG_871X("sleepq_len of bmc_sta = %d\n", psta_bmc->sleepq_len);*/
			
			if (pstapriv->tim_bitmap & BIT(0))
				update_tim = _TRUE;

			pstapriv->tim_bitmap &= ~BIT(0);
			pstapriv->sta_dz_bitmap &= ~BIT(0);

			if (update_tim == _TRUE) {
				DBG_871X("clear TIB\n");
				_update_beacon(padapter, _TIM_IE_, NULL, _TRUE, "bmc sleepq and HIQ empty");
			}			
		}
	}

	_exit_critical_bh(&pxmitpriv->lock, &irqL);

/*
	//HIQ Check
	rtw_hal_get_hwreg(padapter, HW_VAR_CHK_HI_QUEUE_EMPTY, &empty);

	while (_FALSE == empty && rtw_get_passing_time_ms(start) < 3000)
	{
		rtw_msleep_os(100);
		rtw_hal_get_hwreg(padapter, HW_VAR_CHK_HI_QUEUE_EMPTY, &empty);
	}


	printk("check if hiq empty=%d\n", empty);
*/

	return H2C_SUCCESS;
}

#ifdef CONFIG_NATIVEAP_MLME

static void associated_stainfo_update(_adapter *padapter, struct sta_info *psta, u32 sta_info_type)
{
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);

	DBG_871X("%s: "MAC_FMT", updated_type=0x%x\n", __func__, MAC_ARG(psta->hwaddr), sta_info_type);
	
	if (sta_info_type & STA_INFO_UPDATE_BW) {

		if ((psta->flags & WLAN_STA_HT) && !psta->ht_20mhz_set) {
			if (pmlmepriv->sw_to_20mhz) {
				psta->bw_mode = CHANNEL_WIDTH_20;
				/*psta->htpriv.ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;*/
				psta->htpriv.sgi_40m = _FALSE;				
			} else {
				/*TODO: Switch back to 40MHZ?80MHZ*/
			}
		}		
	}

/*
	if (sta_info_type & STA_INFO_UPDATE_RATE) {
		
	}
*/	

	if (sta_info_type & STA_INFO_UPDATE_PROTECTION_MODE)
		VCS_update(padapter, psta);
	
/*
	if (sta_info_type & STA_INFO_UPDATE_CAP) {
		
	}

	if (sta_info_type & STA_INFO_UPDATE_HT_CAP) {
		
	}

	if (sta_info_type & STA_INFO_UPDATE_VHT_CAP) {
		
	}	
*/

}

static void update_bcn_ext_capab_ie(_adapter *padapter)
{
	sint ie_len = 0;
	unsigned char	*pbuf;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network);
	u8 *ie = pnetwork->IEs; 
	u8 null_extcap_data[8] = {0};
	
	pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _EXT_CAP_IE_, &ie_len, (pnetwork->IELength - _BEACON_IE_OFFSET_));
	if (pbuf && ie_len > 0)
		rtw_remove_bcn_ie(padapter, pnetwork, _EXT_CAP_IE_);

	if ((pmlmepriv->ext_capab_ie_len > 0) && 
		(_rtw_memcmp(pmlmepriv->ext_capab_ie_data, null_extcap_data, sizeof(null_extcap_data)) == _FALSE))
		rtw_add_bcn_ie(padapter, pnetwork, _EXT_CAP_IE_, pmlmepriv->ext_capab_ie_data, pmlmepriv->ext_capab_ie_len);
	
}

static void update_bcn_fixed_ie(_adapter *padapter)
{
	DBG_871X("%s\n", __FUNCTION__);

}

static void update_bcn_erpinfo_ie(_adapter *padapter)
{
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network);
	unsigned char *p, *ie = pnetwork->IEs;
	u32 len = 0;

	DBG_871X("%s, ERP_enable=%d\n", __FUNCTION__, pmlmeinfo->ERP_enable);

	if(!pmlmeinfo->ERP_enable)
		return;

	//parsing ERP_IE
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _ERPINFO_IE_, &len, (pnetwork->IELength - _BEACON_IE_OFFSET_));
	if(p && len>0)
	{
		PNDIS_802_11_VARIABLE_IEs pIE = (PNDIS_802_11_VARIABLE_IEs)p;

		if (pmlmepriv->num_sta_non_erp == 1)
			pIE->data[0] |= RTW_ERP_INFO_NON_ERP_PRESENT|RTW_ERP_INFO_USE_PROTECTION;
		else
			pIE->data[0] &= ~(RTW_ERP_INFO_NON_ERP_PRESENT|RTW_ERP_INFO_USE_PROTECTION);

		if(pmlmepriv->num_sta_no_short_preamble > 0)
			pIE->data[0] |= RTW_ERP_INFO_BARKER_PREAMBLE_MODE;
		else
			pIE->data[0] &= ~(RTW_ERP_INFO_BARKER_PREAMBLE_MODE);
	
		ERP_IE_handler(padapter, pIE);
	}
	
}

static void update_bcn_htcap_ie(_adapter *padapter)
{
	DBG_871X("%s\n", __FUNCTION__);

}

static void update_bcn_htinfo_ie(_adapter *padapter)
{	
	/*
	u8 beacon_updated = _FALSE;
	u32 sta_info_update_type = STA_INFO_UPDATE_NONE;	
	*/
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network);
	unsigned char *p, *ie = pnetwork->IEs;
	u32 len = 0;	

	if (pmlmepriv->htpriv.ht_option == _FALSE) 
		return;

	if (pmlmeinfo->HT_info_enable != 1)
		return;


	DBG_871X("%s current operation mode=0x%X\n",
		   __FUNCTION__, pmlmepriv->ht_op_mode);

	DBG_871X("num_sta_40mhz_intolerant(%d), 20mhz_width_req(%d), intolerant_ch_rpt(%d), olbc(%d)\n", 
					pmlmepriv->num_sta_40mhz_intolerant, pmlmepriv->ht_20mhz_width_req, pmlmepriv->ht_intolerant_ch_reported, pmlmepriv->olbc);

	/*parsing HT_INFO_IE, currently only update ht_op_mode - pht_info->infos[1] & pht_info->infos[2] for wifi logo test*/
	p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_ADD_INFO_IE_, &len, (pnetwork->IELength - _BEACON_IE_OFFSET_));
	if (p && len > 0) {
		struct HT_info_element *pht_info = NULL;
		
		pht_info = (struct HT_info_element *)(p + 2);		

		/* for STA Channel Width/Secondary Channel Offset*/
		if ((pmlmepriv->sw_to_20mhz == 0) && (pmlmeext->cur_channel <= 14)) {
			if ((pmlmepriv->num_sta_40mhz_intolerant > 0) || (pmlmepriv->ht_20mhz_width_req == _TRUE) 
				|| (pmlmepriv->ht_intolerant_ch_reported == _TRUE) || (pmlmepriv->olbc == _TRUE)) {
				SET_HT_OP_ELE_2ND_CHL_OFFSET(pht_info, 0);
				SET_HT_OP_ELE_STA_CHL_WIDTH(pht_info, 0);

				pmlmepriv->sw_to_20mhz = 1;
				/*
				sta_info_update_type |= STA_INFO_UPDATE_BW;
				beacon_updated = _TRUE;
				*/
	
				DBG_871X("%s:switching to 20Mhz\n", __FUNCTION__);	

				/*TODO : cur_bwmode/cur_ch_offset switches to 20Mhz*/
			}
		} else {

			if ((pmlmepriv->num_sta_40mhz_intolerant == 0) && (pmlmepriv->ht_20mhz_width_req == _FALSE) 
				&& (pmlmepriv->ht_intolerant_ch_reported == _FALSE) && (pmlmepriv->olbc == _FALSE)) {

				if (pmlmeext->cur_bwmode >= CHANNEL_WIDTH_40) {
					
					SET_HT_OP_ELE_STA_CHL_WIDTH(pht_info, 1);

					SET_HT_OP_ELE_2ND_CHL_OFFSET(pht_info, 
					(pmlmeext->cur_ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) ? 
						HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE : HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW);
					
					pmlmepriv->sw_to_20mhz = 0;
					/*
					sta_info_update_type |= STA_INFO_UPDATE_BW;
					beacon_updated = _TRUE;
					*/
					
					DBG_871X("%s:switching back to 40Mhz\n", __FUNCTION__);	
				}
			}
		}

		/* to update  ht_op_mode*/
		*(u16 *)(pht_info->infos + 1) = cpu_to_le16(pmlmepriv->ht_op_mode);
		
	}	

	/*associated_clients_update(padapter, beacon_updated, sta_info_update_type);*/

}

static void update_bcn_rsn_ie(_adapter *padapter)
{
	DBG_871X("%s\n", __FUNCTION__);

}

static void update_bcn_wpa_ie(_adapter *padapter)
{
	DBG_871X("%s\n", __FUNCTION__);

}

static void update_bcn_wmm_ie(_adapter *padapter)
{
	DBG_871X("%s\n", __FUNCTION__);
	
}

static void update_bcn_wps_ie(_adapter *padapter)
{
	u8 *pwps_ie=NULL, *pwps_ie_src, *premainder_ie, *pbackup_remainder_ie=NULL;
	uint wps_ielen=0, wps_offset, remainder_ielen;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct mlme_ext_priv	*pmlmeext = &(padapter->mlmeextpriv);
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network);
	unsigned char *ie = pnetwork->IEs;
	u32 ielen = pnetwork->IELength;


	DBG_871X("%s\n", __FUNCTION__);

	pwps_ie = rtw_get_wps_ie(ie+_FIXED_IE_LENGTH_, ielen-_FIXED_IE_LENGTH_, NULL, &wps_ielen);
	
	if(pwps_ie==NULL || wps_ielen==0)
		return;

	pwps_ie_src = pmlmepriv->wps_beacon_ie;
	if(pwps_ie_src == NULL)
		return;

	wps_offset = (uint)(pwps_ie-ie);

	premainder_ie = pwps_ie + wps_ielen;

	remainder_ielen = ielen - wps_offset - wps_ielen;

	if(remainder_ielen>0)
	{
		pbackup_remainder_ie = rtw_malloc(remainder_ielen);
		if(pbackup_remainder_ie)
			_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
	}

	wps_ielen = (uint)pwps_ie_src[1];//to get ie data len
	if((wps_offset+wps_ielen+2+remainder_ielen)<=MAX_IE_SZ)
	{
		_rtw_memcpy(pwps_ie, pwps_ie_src, wps_ielen+2);
		pwps_ie += (wps_ielen+2);

		if(pbackup_remainder_ie)
			_rtw_memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen);

		//update IELength
		pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen;
	}

	if(pbackup_remainder_ie)
		rtw_mfree(pbackup_remainder_ie, remainder_ielen);
	
	// deal with the case without set_tx_beacon_cmd() in update_beacon() 
#if defined( CONFIG_INTERRUPT_BASED_TXBCN ) || defined( CONFIG_PCI_HCI )
	if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
	{
		u8 sr = 0;
		rtw_get_wps_attr_content(pwps_ie_src,  wps_ielen, WPS_ATTR_SELECTED_REGISTRAR, (u8*)(&sr), NULL);
	
		if( sr ) {
			set_fwstate(pmlmepriv, WIFI_UNDER_WPS);
			DBG_871X("%s, set WIFI_UNDER_WPS\n", __func__);
		}
	}
#endif
}

static void update_bcn_p2p_ie(_adapter *padapter)
{

}

static void update_bcn_vendor_spec_ie(_adapter *padapter, u8*oui)
{
	DBG_871X("%s\n", __FUNCTION__);

	if(_rtw_memcmp(RTW_WPA_OUI, oui, 4))
	{
		update_bcn_wpa_ie(padapter);
	}
	else if(_rtw_memcmp(WMM_OUI, oui, 4))
	{
		update_bcn_wmm_ie(padapter);
	}
	else if(_rtw_memcmp(WPS_OUI, oui, 4))
	{
		update_bcn_wps_ie(padapter);
	}
	else if(_rtw_memcmp(P2P_OUI, oui, 4))
	{
		update_bcn_p2p_ie(padapter);
	}
	else
	{
		DBG_871X("unknown OUI type!\n");
 	}
	
	
}

void _update_beacon(_adapter *padapter, u8 ie_id, u8 *oui, u8 tx, const char *tag)
{
	_irqL irqL;
	struct mlme_priv *pmlmepriv;
	struct mlme_ext_priv	*pmlmeext;
	//struct mlme_ext_info	*pmlmeinfo;
	
	//DBG_871X("%s\n", __FUNCTION__);

	if(!padapter)
		return;

	pmlmepriv = &(padapter->mlmepriv);
	pmlmeext = &(padapter->mlmeextpriv);
	//pmlmeinfo = &(pmlmeext->mlmext_info);

	if(_FALSE == pmlmeext->bstart_bss)
		return;

	_enter_critical_bh(&pmlmepriv->bcn_update_lock, &irqL);

	switch(ie_id)
	{
		case 0xFF:

			update_bcn_fixed_ie(padapter);//8: TimeStamp, 2: Beacon Interval 2:Capability
			
			break;
	
		case _TIM_IE_:
			
			update_BCNTIM(padapter);
			
			break;

		case _ERPINFO_IE_:

			update_bcn_erpinfo_ie(padapter);

			break;

		case _HT_CAPABILITY_IE_:

			update_bcn_htcap_ie(padapter);
			
			break;

		case _RSN_IE_2_:

			update_bcn_rsn_ie(padapter);

			break;
			
		case _HT_ADD_INFO_IE_:

			update_bcn_htinfo_ie(padapter);
			
			break;
	
		case _EXT_CAP_IE_:

			update_bcn_ext_capab_ie(padapter);

			break;
	
		case _VENDOR_SPECIFIC_IE_:

			update_bcn_vendor_spec_ie(padapter, oui);
			
			break;
			
		default:
			break;
	}

	pmlmepriv->update_bcn = _TRUE;
	
	_exit_critical_bh(&pmlmepriv->bcn_update_lock, &irqL);		
	
#ifndef CONFIG_INTERRUPT_BASED_TXBCN 
#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
	if(tx)
	{
		//send_beacon(padapter);//send_beacon must execute on TSR level
		if (0)
			DBG_871X(FUNC_ADPT_FMT" ie_id:%u - %s\n", FUNC_ADPT_ARG(padapter), ie_id, tag);
		set_tx_beacon_cmd(padapter);
	}
#else
	{	
		//PCI will issue beacon when BCN interrupt occurs.		
	}
#endif
#endif //!CONFIG_INTERRUPT_BASED_TXBCN
	
}

#ifdef CONFIG_80211N_HT

void rtw_process_public_act_bsscoex(_adapter *padapter, u8 *pframe, uint frame_len)
{
	struct sta_info *psta;
	struct sta_priv *pstapriv = &padapter->stapriv;
	u8 beacon_updated = _FALSE;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr);	
	uint frame_body_len = frame_len - sizeof(struct rtw_ieee80211_hdr_3addr);
	u8 category, action;

	psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe));
	if (psta == NULL) 
		return;


	category = frame_body[0];
	action = frame_body[1];

	if (frame_body_len > 0) {
		if ((frame_body[2] == EID_BSSCoexistence) && (frame_body[3] > 0)) {			
			u8 ie_data = frame_body[4];

			if (ie_data & RTW_WLAN_20_40_BSS_COEX_40MHZ_INTOL) {
				if (psta->ht_40mhz_intolerant == 0) {				
					psta->ht_40mhz_intolerant = 1;
					pmlmepriv->num_sta_40mhz_intolerant++;
					beacon_updated = _TRUE;
				}	
			} else if (ie_data & RTW_WLAN_20_40_BSS_COEX_20MHZ_WIDTH_REQ)	{				
				if (pmlmepriv->ht_20mhz_width_req == _FALSE) {				
					pmlmepriv->ht_20mhz_width_req = _TRUE;			
					beacon_updated = _TRUE;
				}	
			} else
				beacon_updated = _FALSE;
		}		
	}

	if (frame_body_len > 8) {
		/* if EID_BSSIntolerantChlReport ie exists */
		if ((frame_body[5] == EID_BSSIntolerantChlReport) && (frame_body[6] > 0)) {
			/*todo:*/
			if (pmlmepriv->ht_intolerant_ch_reported == _FALSE) {				
				pmlmepriv->ht_intolerant_ch_reported = _TRUE;			
				beacon_updated = _TRUE;
			}
		}			
	}

	if (beacon_updated) {
		
		update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE);
	
		associated_stainfo_update(padapter, psta, STA_INFO_UPDATE_BW);
	}

	
	
}

void rtw_process_ht_action_smps(_adapter *padapter, u8 *ta, u8 ctrl_field)
{
	u8 e_field, m_field;
	struct sta_info *psta;
	struct sta_priv *pstapriv = &padapter->stapriv;

	psta = rtw_get_stainfo(pstapriv, ta);
	if (psta == NULL) 
		return;

	e_field = (ctrl_field & BIT(0)) ? 1 : 0;
	m_field = (ctrl_field & BIT(1)) ? 1 : 0;	

	if (e_field) {

		/* enable */
		/* 0:static SMPS, 1:dynamic SMPS, 3:SMPS disabled, 2:reserved*/
		 
		if (m_field) /*mode*/
			psta->htpriv.smps_cap = 1;
		else
			psta->htpriv.smps_cap = 0;
	} else {
		/*disable*/
		psta->htpriv.smps_cap = 3;
	}

	rtw_dm_ra_mask_wk_cmd(padapter, (u8 *)psta);

}

/*
op_mode
Set to 0 (HT pure) under the followign conditions
	- all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or
	- all STAs in the BSS are 20 MHz HT in 20 MHz BSS
Set to 1 (HT non-member protection) if there may be non-HT STAs
	in both the primary and the secondary channel
Set to 2 if only HT STAs are associated in BSS,
	however and at least one 20 MHz HT STA is associated
Set to 3 (HT mixed mode) when one or more non-HT STAs are associated
	(currently non-GF HT station is considered as non-HT STA also)
*/
static int rtw_ht_operation_update(_adapter *padapter)
{
	u16 cur_op_mode, new_op_mode;
	int op_mode_changes = 0;
	struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
	struct ht_priv	*phtpriv_ap = &pmlmepriv->htpriv;

	if (pmlmepriv->htpriv.ht_option == _FALSE) 
		return 0;
	
	/*if (!iface->conf->ieee80211n || iface->conf->ht_op_mode_fixed)
		return 0;*/

	DBG_871X("%s current operation mode=0x%X\n",
		   __FUNCTION__, pmlmepriv->ht_op_mode);

	if (!(pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT)
	    && pmlmepriv->num_sta_ht_no_gf) {
		pmlmepriv->ht_op_mode |=
			HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT;
		op_mode_changes++;
	} else if ((pmlmepriv->ht_op_mode &
		    HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT) &&
		   pmlmepriv->num_sta_ht_no_gf == 0) {
		pmlmepriv->ht_op_mode &=
			~HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT;
		op_mode_changes++;
	}

	if (!(pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT) &&
	    (pmlmepriv->num_sta_no_ht || pmlmepriv->olbc_ht)) {
		pmlmepriv->ht_op_mode |= HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT;
		op_mode_changes++;
	} else if ((pmlmepriv->ht_op_mode &
		    HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT) &&
		   (pmlmepriv->num_sta_no_ht == 0 && !pmlmepriv->olbc_ht)) {
		pmlmepriv->ht_op_mode &=
			~HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT;
		op_mode_changes++;
	}

	/* Note: currently we switch to the MIX
Download .txt
gitextract_bsjayzui/

├── .gitignore
├── Kconfig
├── LICENSE
├── Makefile
├── README.md
├── clean
├── core/
│   ├── efuse/
│   │   └── rtw_efuse.c
│   ├── rtw_ap.c
│   ├── rtw_beamforming.c
│   ├── rtw_br_ext.c
│   ├── rtw_bt_mp.c
│   ├── rtw_btcoex.c
│   ├── rtw_cmd.c
│   ├── rtw_debug.c
│   ├── rtw_eeprom.c
│   ├── rtw_ieee80211.c
│   ├── rtw_io.c
│   ├── rtw_ioctl_query.c
│   ├── rtw_ioctl_rtl.c
│   ├── rtw_ioctl_set.c
│   ├── rtw_iol.c
│   ├── rtw_mem.c
│   ├── rtw_mlme.c
│   ├── rtw_mlme_ext.c
│   ├── rtw_mp.c
│   ├── rtw_mp_ioctl.c
│   ├── rtw_odm.c
│   ├── rtw_p2p.c
│   ├── rtw_pwrctrl.c
│   ├── rtw_recv.c
│   ├── rtw_rf.c
│   ├── rtw_security.c
│   ├── rtw_sreset.c
│   ├── rtw_sta_mgt.c
│   ├── rtw_tdls.c
│   ├── rtw_vht.c
│   ├── rtw_wapi.c
│   ├── rtw_wapi_sms4.c
│   ├── rtw_wlan_util.c
│   └── rtw_xmit.c
├── dkms.conf
├── hal/
│   ├── HalPwrSeqCmd.c
│   ├── btc/
│   │   ├── HalBtc8188c2Ant.c
│   │   ├── HalBtc8188c2Ant.h
│   │   ├── HalBtc8192d2Ant.c
│   │   ├── HalBtc8192d2Ant.h
│   │   ├── HalBtc8192e1Ant.c
│   │   ├── HalBtc8192e1Ant.h
│   │   ├── HalBtc8192e2Ant.c
│   │   ├── HalBtc8192e2Ant.h
│   │   ├── HalBtc8703b1Ant.c
│   │   ├── HalBtc8703b1Ant.h
│   │   ├── HalBtc8703b2Ant.c
│   │   ├── HalBtc8703b2Ant.h
│   │   ├── HalBtc8723a1Ant.c
│   │   ├── HalBtc8723a1Ant.h
│   │   ├── HalBtc8723a2Ant.c
│   │   ├── HalBtc8723a2Ant.h
│   │   ├── HalBtc8723b1Ant.c
│   │   ├── HalBtc8723b1Ant.h
│   │   ├── HalBtc8723b2Ant.c
│   │   ├── HalBtc8723b2Ant.h
│   │   ├── HalBtc8812a1Ant.c
│   │   ├── HalBtc8812a1Ant.h
│   │   ├── HalBtc8812a2Ant.c
│   │   ├── HalBtc8812a2Ant.h
│   │   ├── HalBtc8821a1Ant.c
│   │   ├── HalBtc8821a1Ant.h
│   │   ├── HalBtc8821a2Ant.c
│   │   ├── HalBtc8821a2Ant.h
│   │   ├── HalBtc8821aCsr2Ant.c
│   │   ├── HalBtc8821aCsr2Ant.h
│   │   ├── HalBtcOutSrc.h
│   │   └── Mp_Precomp.h
│   ├── efuse/
│   │   ├── efuse_mask.h
│   │   └── rtl8814a/
│   │       ├── HalEfuseMask8814A_PCIE.c
│   │       ├── HalEfuseMask8814A_PCIE.h
│   │       ├── HalEfuseMask8814A_USB.c
│   │       └── HalEfuseMask8814A_USB.h
│   ├── hal_btcoex.c
│   ├── hal_com.c
│   ├── hal_com_c2h.h
│   ├── hal_com_phycfg.c
│   ├── hal_dm.c
│   ├── hal_dm.h
│   ├── hal_hci/
│   │   └── hal_usb.c
│   ├── hal_intf.c
│   ├── hal_mp.c
│   ├── hal_phy.c
│   ├── led/
│   │   └── hal_usb_led.c
│   ├── phydm/
│   │   ├── halhwimg.h
│   │   ├── halphyrf_ap.c
│   │   ├── halphyrf_ap.h
│   │   ├── halphyrf_ce.c
│   │   ├── halphyrf_ce.h
│   │   ├── halphyrf_win.c
│   │   ├── halphyrf_win.h
│   │   ├── mp_precomp.h
│   │   ├── phydm.c
│   │   ├── phydm.h
│   │   ├── phydm_acs.c
│   │   ├── phydm_acs.h
│   │   ├── phydm_adaptivity.c
│   │   ├── phydm_adaptivity.h
│   │   ├── phydm_antdect.c
│   │   ├── phydm_antdect.h
│   │   ├── phydm_antdiv.c
│   │   ├── phydm_antdiv.h
│   │   ├── phydm_beamforming.c
│   │   ├── phydm_beamforming.h
│   │   ├── phydm_cfotracking.c
│   │   ├── phydm_cfotracking.h
│   │   ├── phydm_debug.c
│   │   ├── phydm_debug.h
│   │   ├── phydm_dig.c
│   │   ├── phydm_dig.h
│   │   ├── phydm_dynamicbbpowersaving.c
│   │   ├── phydm_dynamicbbpowersaving.h
│   │   ├── phydm_dynamictxpower.c
│   │   ├── phydm_dynamictxpower.h
│   │   ├── phydm_edcaturbocheck.c
│   │   ├── phydm_edcaturbocheck.h
│   │   ├── phydm_hwconfig.c
│   │   ├── phydm_hwconfig.h
│   │   ├── phydm_interface.c
│   │   ├── phydm_interface.h
│   │   ├── phydm_noisemonitor.c
│   │   ├── phydm_noisemonitor.h
│   │   ├── phydm_pathdiv.c
│   │   ├── phydm_pathdiv.h
│   │   ├── phydm_powertracking_ap.c
│   │   ├── phydm_powertracking_ap.h
│   │   ├── phydm_powertracking_ce.c
│   │   ├── phydm_powertracking_ce.h
│   │   ├── phydm_powertracking_win.c
│   │   ├── phydm_powertracking_win.h
│   │   ├── phydm_pre_define.h
│   │   ├── phydm_precomp.h
│   │   ├── phydm_rainfo.c
│   │   ├── phydm_rainfo.h
│   │   ├── phydm_reg.h
│   │   ├── phydm_regdefine11ac.h
│   │   ├── phydm_regdefine11n.h
│   │   ├── phydm_rxhp.c
│   │   ├── phydm_rxhp.h
│   │   ├── phydm_types.h
│   │   ├── rtchnlplan.c
│   │   ├── rtchnlplan.h
│   │   ├── rtl8814a/
│   │   │   ├── hal8814areg_odm.h
│   │   │   ├── halhwimg8814a_bb.c
│   │   │   ├── halhwimg8814a_bb.h
│   │   │   ├── halhwimg8814a_fw.c
│   │   │   ├── halhwimg8814a_fw.h
│   │   │   ├── halhwimg8814a_mac.c
│   │   │   ├── halhwimg8814a_mac.h
│   │   │   ├── halhwimg8814a_rf.c
│   │   │   ├── halhwimg8814a_rf.h
│   │   │   ├── halphyrf_8814a_ap.c
│   │   │   ├── halphyrf_8814a_ap.h
│   │   │   ├── halphyrf_8814a_ce.c
│   │   │   ├── halphyrf_8814a_ce.h
│   │   │   ├── halphyrf_8814a_win.c
│   │   │   ├── halphyrf_8814a_win.h
│   │   │   ├── phydm_iqk_8814a.c
│   │   │   ├── phydm_iqk_8814a.h
│   │   │   ├── phydm_regconfig8814a.c
│   │   │   ├── phydm_regconfig8814a.h
│   │   │   ├── phydm_rtl8814a.c
│   │   │   ├── phydm_rtl8814a.h
│   │   │   └── version_rtl8814a.h
│   │   └── txbf/
│   │       ├── halcomtxbf.c
│   │       ├── halcomtxbf.h
│   │       ├── haltxbf8192e.c
│   │       ├── haltxbf8192e.h
│   │       ├── haltxbf8814a.c
│   │       ├── haltxbf8814a.h
│   │       ├── haltxbf8821b.c
│   │       ├── haltxbf8821b.h
│   │       ├── haltxbf8822b.c
│   │       ├── haltxbf8822b.h
│   │       ├── haltxbfinterface.c
│   │       ├── haltxbfinterface.h
│   │       ├── haltxbfjaguar.c
│   │       └── haltxbfjaguar.h
│   └── rtl8814a/
│       ├── Hal8814PwrSeq.c
│       ├── rtl8814a_cmd.c
│       ├── rtl8814a_dm.c
│       ├── rtl8814a_hal_init.c
│       ├── rtl8814a_phycfg.c
│       ├── rtl8814a_rf6052.c
│       ├── rtl8814a_rxdesc.c
│       ├── rtl8814a_sreset.c
│       ├── rtl8814a_xmit.c
│       └── usb/
│           ├── rtl8814au_led.c
│           ├── rtl8814au_recv.c
│           ├── rtl8814au_xmit.c
│           ├── usb_halinit.c
│           └── usb_ops_linux.c
├── ifcfg-wlan0
├── include/
│   ├── Hal8188EPhyCfg.h
│   ├── Hal8188EPhyReg.h
│   ├── Hal8188EPwrSeq.h
│   ├── Hal8188FPhyCfg.h
│   ├── Hal8188FPhyReg.h
│   ├── Hal8188FPwrSeq.h
│   ├── Hal8192EPhyCfg.h
│   ├── Hal8192EPhyReg.h
│   ├── Hal8192EPwrSeq.h
│   ├── Hal8703BPhyCfg.h
│   ├── Hal8703BPhyReg.h
│   ├── Hal8703BPwrSeq.h
│   ├── Hal8723BPhyCfg.h
│   ├── Hal8723BPhyReg.h
│   ├── Hal8723BPwrSeq.h
│   ├── Hal8723PwrSeq.h
│   ├── Hal8812PhyCfg.h
│   ├── Hal8812PhyReg.h
│   ├── Hal8812PwrSeq.h
│   ├── Hal8814PhyCfg.h
│   ├── Hal8814PhyReg.h
│   ├── Hal8814PwrSeq.h
│   ├── Hal8821APwrSeq.h
│   ├── HalPwrSeqCmd.h
│   ├── HalVerDef.h
│   ├── autoconf.h
│   ├── basic_types.h
│   ├── byteorder/
│   │   ├── big_endian.h
│   │   ├── generic.h
│   │   ├── little_endian.h
│   │   ├── swab.h
│   │   └── swabb.h
│   ├── circ_buf.h
│   ├── cmd_osdep.h
│   ├── custom_gpio.h
│   ├── drv_conf.h
│   ├── drv_types.h
│   ├── drv_types_ce.h
│   ├── drv_types_gspi.h
│   ├── drv_types_linux.h
│   ├── drv_types_pci.h
│   ├── drv_types_sdio.h
│   ├── drv_types_xp.h
│   ├── ethernet.h
│   ├── gspi_hal.h
│   ├── gspi_ops.h
│   ├── gspi_ops_linux.h
│   ├── gspi_osintf.h
│   ├── h2clbk.h
│   ├── hal_btcoex.h
│   ├── hal_com.h
│   ├── hal_com_h2c.h
│   ├── hal_com_led.h
│   ├── hal_com_phycfg.h
│   ├── hal_com_reg.h
│   ├── hal_data.h
│   ├── hal_gspi.h
│   ├── hal_ic_cfg.h
│   ├── hal_intf.h
│   ├── hal_pg.h
│   ├── hal_phy.h
│   ├── hal_phy_reg.h
│   ├── hal_sdio.h
│   ├── ieee80211.h
│   ├── ieee80211_ext.h
│   ├── if_ether.h
│   ├── ip.h
│   ├── linux/
│   │   └── wireless.h
│   ├── mlme_osdep.h
│   ├── mp_custom_oid.h
│   ├── nic_spec.h
│   ├── osdep_intf.h
│   ├── osdep_service.h
│   ├── osdep_service_bsd.h
│   ├── osdep_service_ce.h
│   ├── osdep_service_linux.h
│   ├── osdep_service_xp.h
│   ├── pci_hal.h
│   ├── pci_ops.h
│   ├── pci_osintf.h
│   ├── recv_osdep.h
│   ├── rtl8188e_cmd.h
│   ├── rtl8188e_dm.h
│   ├── rtl8188e_hal.h
│   ├── rtl8188e_led.h
│   ├── rtl8188e_recv.h
│   ├── rtl8188e_rf.h
│   ├── rtl8188e_spec.h
│   ├── rtl8188e_sreset.h
│   ├── rtl8188e_xmit.h
│   ├── rtl8188f_cmd.h
│   ├── rtl8188f_dm.h
│   ├── rtl8188f_hal.h
│   ├── rtl8188f_led.h
│   ├── rtl8188f_recv.h
│   ├── rtl8188f_rf.h
│   ├── rtl8188f_spec.h
│   ├── rtl8188f_sreset.h
│   ├── rtl8188f_xmit.h
│   ├── rtl8192e_cmd.h
│   ├── rtl8192e_dm.h
│   ├── rtl8192e_hal.h
│   ├── rtl8192e_led.h
│   ├── rtl8192e_recv.h
│   ├── rtl8192e_rf.h
│   ├── rtl8192e_spec.h
│   ├── rtl8192e_sreset.h
│   ├── rtl8192e_xmit.h
│   ├── rtl8703b_cmd.h
│   ├── rtl8703b_dm.h
│   ├── rtl8703b_hal.h
│   ├── rtl8703b_led.h
│   ├── rtl8703b_recv.h
│   ├── rtl8703b_rf.h
│   ├── rtl8703b_spec.h
│   ├── rtl8703b_sreset.h
│   ├── rtl8703b_xmit.h
│   ├── rtl8723b_cmd.h
│   ├── rtl8723b_dm.h
│   ├── rtl8723b_hal.h
│   ├── rtl8723b_led.h
│   ├── rtl8723b_recv.h
│   ├── rtl8723b_rf.h
│   ├── rtl8723b_spec.h
│   ├── rtl8723b_sreset.h
│   ├── rtl8723b_xmit.h
│   ├── rtl8812a_cmd.h
│   ├── rtl8812a_dm.h
│   ├── rtl8812a_hal.h
│   ├── rtl8812a_led.h
│   ├── rtl8812a_recv.h
│   ├── rtl8812a_rf.h
│   ├── rtl8812a_spec.h
│   ├── rtl8812a_sreset.h
│   ├── rtl8812a_xmit.h
│   ├── rtl8814a_cmd.h
│   ├── rtl8814a_dm.h
│   ├── rtl8814a_hal.h
│   ├── rtl8814a_led.h
│   ├── rtl8814a_recv.h
│   ├── rtl8814a_rf.h
│   ├── rtl8814a_spec.h
│   ├── rtl8814a_sreset.h
│   ├── rtl8814a_xmit.h
│   ├── rtl8821a_spec.h
│   ├── rtl8821a_xmit.h
│   ├── rtw_android.h
│   ├── rtw_ap.h
│   ├── rtw_beamforming.h
│   ├── rtw_br_ext.h
│   ├── rtw_bt_mp.h
│   ├── rtw_btcoex.h
│   ├── rtw_byteorder.h
│   ├── rtw_cmd.h
│   ├── rtw_debug.h
│   ├── rtw_eeprom.h
│   ├── rtw_efuse.h
│   ├── rtw_event.h
│   ├── rtw_ht.h
│   ├── rtw_io.h
│   ├── rtw_ioctl.h
│   ├── rtw_ioctl_query.h
│   ├── rtw_ioctl_rtl.h
│   ├── rtw_ioctl_set.h
│   ├── rtw_iol.h
│   ├── rtw_mem.h
│   ├── rtw_mlme.h
│   ├── rtw_mlme_ext.h
│   ├── rtw_mp.h
│   ├── rtw_mp_ioctl.h
│   ├── rtw_mp_phy_regdef.h
│   ├── rtw_odm.h
│   ├── rtw_p2p.h
│   ├── rtw_pwrctrl.h
│   ├── rtw_qos.h
│   ├── rtw_recv.h
│   ├── rtw_rf.h
│   ├── rtw_security.h
│   ├── rtw_sreset.h
│   ├── rtw_tdls.h
│   ├── rtw_version.h
│   ├── rtw_vht.h
│   ├── rtw_wapi.h
│   ├── rtw_wifi_regd.h
│   ├── rtw_xmit.h
│   ├── sdio_hal.h
│   ├── sdio_ops.h
│   ├── sdio_ops_ce.h
│   ├── sdio_ops_linux.h
│   ├── sdio_ops_xp.h
│   ├── sdio_osintf.h
│   ├── sta_info.h
│   ├── usb_hal.h
│   ├── usb_ops.h
│   ├── usb_ops_linux.h
│   ├── usb_osintf.h
│   ├── usb_vendor_req.h
│   ├── wifi.h
│   ├── wlan_bssdef.h
│   └── xmit_osdep.h
├── os_dep/
│   ├── linux/
│   │   ├── custom_gpio_linux.c
│   │   ├── ioctl_cfg80211.c
│   │   ├── ioctl_cfg80211.h
│   │   ├── ioctl_linux.c
│   │   ├── ioctl_mp.c
│   │   ├── mlme_linux.c
│   │   ├── os_intfs.c
│   │   ├── recv_linux.c
│   │   ├── rtw_android.c
│   │   ├── rtw_cfgvendor.c
│   │   ├── rtw_cfgvendor.h
│   │   ├── rtw_proc.c
│   │   ├── rtw_proc.h
│   │   ├── usb_intf.c
│   │   ├── usb_ops_linux.c
│   │   ├── wifi_regd.c
│   │   └── xmit_linux.c
│   └── osdep_service.c
├── platform/
│   ├── platform_ARM_SUN50IW1P1_sdio.c
│   ├── platform_ARM_SUNnI_sdio.c
│   ├── platform_ARM_SUNxI_sdio.c
│   ├── platform_ARM_SUNxI_usb.c
│   ├── platform_ARM_WMT_sdio.c
│   ├── platform_RTK_DMP_usb.c
│   ├── platform_arm_act_sdio.c
│   ├── platform_ops.c
│   ├── platform_ops.h
│   └── platform_sprd_sdio.c
├── runwpa
└── wlan0dhcp
Download .txt
Showing preview only (587K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8473 symbols across 297 files)

FILE: core/efuse/rtw_efuse.c
  function BOOLEAN (line 57) | BOOLEAN
  function BOOLEAN (line 80) | BOOLEAN
  function VOID (line 117) | VOID
  function VOID (line 126) | VOID
  function u16 (line 152) | u16
  function u8 (line 166) | u8
  function VOID (line 188) | VOID
  function VOID (line 269) | VOID
  function VOID (line 282) | VOID
  function u8 (line 310) | u8
  function EFUSE_Write1Byte (line 380) | void
  function u8 (line 429) | u8
  function u8 (line 494) | u8
  function Efuse_PgPacketRead (line 569) | int
  function Efuse_PgPacketWrite (line 582) | int
  function Efuse_PgPacketWrite_BT (line 597) | int
  function efuse_WordEnableDataRead (line 628) | void
  function u8 (line 656) | u8
  function u8 (line 670) | static u8 efuse_read8(PADAPTER padapter, u16 address, u8 *value)
  function u8 (line 675) | static u8 efuse_write8(PADAPTER padapter, u16 address, u8 *value)
  function u8 (line 683) | u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cn...
  function u16 (line 721) | u16 efuse_GetMaxSize(PADAPTER padapter)
  function u8 (line 730) | u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size)
  function u8 (line 739) | u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
  function u8 (line 757) | u8 rtw_BT_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
  function BOOLEAN (line 775) | BOOLEAN rtw_file_efuse_IsMasked(
  function u8 (line 798) | u8 rtw_efuse_file_read(PADAPTER padapter,u8 *filepatch,u8 *buf,u32 len)
  function BOOLEAN (line 843) | BOOLEAN
  function u8 (line 934) | u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
  function u8 (line 1041) | u8 rtw_efuse_mask_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
  function u8 (line 1070) | u8 rtw_BT_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data)
  function VOID (line 1180) | VOID
  function VOID (line 1216) | static VOID
  function VOID (line 1229) | static VOID
  function VOID (line 1243) | static VOID
  function VOID (line 1284) | static VOID
  function VOID (line 1297) | static VOID
  function VOID (line 1313) | static VOID
  function EFUSE_ShadowMapUpdate (line 1344) | void EFUSE_ShadowMapUpdate(
  function EFUSE_ShadowRead (line 1393) | void
  function VOID (line 1431) | VOID
  function VOID (line 1458) | VOID
  function isAdaptorInfoFileValid (line 1488) | int isAdaptorInfoFileValid(void)
  function storeAdaptorInfoFile (line 1493) | int storeAdaptorInfoFile(char *path, u8* efuse_data)
  function retriveAdaptorInfoFile (line 1510) | int retriveAdaptorInfoFile(char *path, u8* efuse_data)
  function u32 (line 1542) | u32 rtw_read_efuse_from_file(const char *path, u8 *buf)
  function u32 (line 1622) | u32 rtw_read_macaddr_from_file(const char *path, u8 *buf)

FILE: core/rtw_ap.c
  function init_mlme_ap_info (line 33) | void init_mlme_ap_info(_adapter *padapter)
  function free_mlme_ap_info (line 51) | void free_mlme_ap_info(_adapter *padapter)
  function update_BCNTIM (line 83) | static void update_BCNTIM(_adapter *padapter)
  function rtw_add_bcn_ie (line 199) | void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 inde...
  function rtw_remove_bcn_ie (line 272) | void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 i...
  type sta_info (line 315) | struct sta_info
  function u8 (line 316) | u8 chk_sta_is_alive(struct sta_info *psta)
  function expire_timeout_chk (line 350) | void	expire_timeout_chk(_adapter *padapter)
  function add_RATid (line 663) | void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
  function update_bmc_sta (line 857) | void update_bmc_sta(_adapter *padapter)
  function update_sta_info_apmode (line 945) | void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta)
  function update_ap_info (line 1108) | static void update_ap_info(_adapter *padapter, struct sta_info *psta)
  function rtw_set_hw_wmm_param (line 1168) | static void rtw_set_hw_wmm_param(_adapter *padapter)
  function update_hw_ht_param (line 1313) | static void update_hw_ht_param(_adapter *padapter)
  function rtw_ap_check_scan (line 1359) | static void rtw_ap_check_scan(_adapter *padapter)
  function rtw_start_bss_hdl_after_chbw_decided (line 1446) | void rtw_start_bss_hdl_after_chbw_decided(_adapter *adapter)
  function start_bss_network (line 1475) | void start_bss_network(_adapter *padapter, struct createbss_parm *parm)
  function rtw_check_beacon_data (line 1658) | int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf,  int len)
  function rtw_set_macaddr_acl (line 2215) | void rtw_set_macaddr_acl(_adapter *padapter, int mode)
  function rtw_acl_add_sta (line 2225) | int rtw_acl_add_sta(_adapter *padapter, u8 *addr)
  function rtw_acl_remove_sta (line 2299) | int rtw_acl_remove_sta(_adapter *padapter, u8 *addr)
  function u8 (line 2343) | u8 rtw_ap_set_pairwise_key(_adapter *padapter, struct sta_info *psta)
  function rtw_ap_set_key (line 2381) | static int rtw_ap_set_key(_adapter *padapter, u8 *key, u8 alg, int keyid...
  function rtw_ap_set_group_key (line 2446) | int rtw_ap_set_group_key(_adapter *padapter, u8 *key, u8 alg, int keyid)
  function rtw_ap_set_wep_key (line 2453) | int rtw_ap_set_wep_key(_adapter *padapter, u8 *key, u8 keylen, int keyid...
  function u8 (line 2474) | u8 rtw_ap_bmc_frames_hdl(_adapter *padapter)
  function associated_stainfo_update (line 2576) | static void associated_stainfo_update(_adapter *padapter, struct sta_inf...
  function update_bcn_ext_capab_ie (line 2620) | static void update_bcn_ext_capab_ie(_adapter *padapter)
  function update_bcn_fixed_ie (line 2641) | static void update_bcn_fixed_ie(_adapter *padapter)
  function update_bcn_erpinfo_ie (line 2647) | static void update_bcn_erpinfo_ie(_adapter *padapter)
  function update_bcn_htcap_ie (line 2682) | static void update_bcn_htcap_ie(_adapter *padapter)
  function update_bcn_htinfo_ie (line 2688) | static void update_bcn_htinfo_ie(_adapter *padapter)
  function update_bcn_rsn_ie (line 2771) | static void update_bcn_rsn_ie(_adapter *padapter)
  function update_bcn_wpa_ie (line 2777) | static void update_bcn_wpa_ie(_adapter *padapter)
  function update_bcn_wmm_ie (line 2783) | static void update_bcn_wmm_ie(_adapter *padapter)
  function update_bcn_wps_ie (line 2789) | static void update_bcn_wps_ie(_adapter *padapter)
  function update_bcn_p2p_ie (line 2856) | static void update_bcn_p2p_ie(_adapter *padapter)
  function update_bcn_vendor_spec_ie (line 2861) | static void update_bcn_vendor_spec_ie(_adapter *padapter, u8*oui)
  function _update_beacon (line 2889) | void _update_beacon(_adapter *padapter, u8 ie_id, u8 *oui, u8 tx, const ...
  function rtw_process_public_act_bsscoex (line 2988) | void rtw_process_public_act_bsscoex(_adapter *padapter, u8 *pframe, uint...
  function rtw_process_ht_action_smps (line 3048) | void rtw_process_ht_action_smps(_adapter *padapter, u8 *ta, u8 ctrl_field)
  function rtw_ht_operation_update (line 3091) | static int rtw_ht_operation_update(_adapter *padapter)
  function associated_clients_update (line 3164) | void associated_clients_update(_adapter *padapter, u8 updated, u32 sta_i...
  function bss_cap_update_on_sta_join (line 3196) | void bss_cap_update_on_sta_join(_adapter *padapter, struct sta_info *psta)
  function u8 (line 3435) | u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta)
  function u8 (line 3525) | u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u...
  function rtw_ap_inform_ch_switch (line 3593) | int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset)
  function rtw_sta_flush (line 3630) | int rtw_sta_flush(_adapter *padapter, bool enqueue)
  function sta_info_update (line 3684) | void sta_info_update(_adapter *padapter, struct sta_info *psta)
  function ap_sta_info_defer_update (line 3740) | void ap_sta_info_defer_update(_adapter *padapter, struct sta_info *psta)
  function rtw_ap_restore_network (line 3754) | void rtw_ap_restore_network(_adapter *padapter)
  function start_ap_mode (line 3820) | void start_ap_mode(_adapter *padapter)
  function stop_ap_mode (line 3888) | void stop_ap_mode(_adapter *padapter)
  function rtw_ap_update_bss_chbw (line 3961) | void rtw_ap_update_bss_chbw(_adapter *adapter, WLAN_BSSID_EX *bss, u8 ch...
  function rtw_ap_chbw_decision (line 4085) | bool rtw_ap_chbw_decision(_adapter *adapter, u8 req_ch, u8 req_bw, u8 re...

FILE: core/rtw_beamforming.c
  type beamforming_entry (line 28) | struct beamforming_entry
  type mlme_priv (line 28) | struct mlme_priv
  type beamforming_info (line 31) | struct beamforming_info
  function BEAMFORMING_CAP (line 46) | BEAMFORMING_CAP beamforming_get_entry_beam_cap_by_mac_id(PVOID pmlmepriv...
  type beamforming_entry (line 65) | struct beamforming_entry
  type mlme_priv (line 65) | struct mlme_priv
  type beamforming_info (line 68) | struct beamforming_info
  type beamforming_entry (line 82) | struct beamforming_entry
  type mlme_priv (line 85) | struct mlme_priv
  type beamforming_entry (line 86) | struct beamforming_entry
  function BOOLEAN (line 134) | BOOLEAN	beamforming_remove_entry(struct mlme_priv *pmlmepriv, u8* ra, u8...
  function beamforming_dym_ndpa_rate (line 150) | void	beamforming_dym_ndpa_rate(PADAPTER adapter)
  function beamforming_dym_period (line 165) | void beamforming_dym_period(PADAPTER Adapter)
  function BOOLEAN (line 219) | BOOLEAN	issue_ht_sw_ndpa_packet(PADAPTER Adapter, u8 *ra, CHANNEL_WIDTH ...
  function BOOLEAN (line 298) | BOOLEAN	issue_ht_ndpa_packet(PADAPTER Adapter, u8 *ra, CHANNEL_WIDTH bw,...
  function BOOLEAN (line 373) | BOOLEAN	beamforming_send_ht_ndpa_packet(PADAPTER Adapter, u8 *ra, CHANNE...
  function BOOLEAN (line 377) | BOOLEAN	issue_vht_sw_ndpa_packet(PADAPTER Adapter, u8 *ra, u16 aid, CHAN...
  function BOOLEAN (line 471) | BOOLEAN	issue_vht_ndpa_packet(PADAPTER Adapter, u8 *ra, u16 aid, CHANNEL...
  function BOOLEAN (line 556) | BOOLEAN	beamforming_send_vht_ndpa_packet(PADAPTER Adapter, u8 *ra, u16 a...
  function BOOLEAN (line 561) | BOOLEAN	beamfomring_bSounding(struct beamforming_info *pBeamInfo)
  function u8 (line 573) | u8	beamforming_sounding_idx(struct beamforming_info *pBeamInfo)
  function SOUNDING_MODE (line 591) | SOUNDING_MODE	beamforming_sounding_mode(struct beamforming_info *pBeamIn...
  function u16 (line 612) | u16	beamforming_sounding_time(struct beamforming_info *pBeamInfo, SOUNDI...
  function CHANNEL_WIDTH (line 622) | CHANNEL_WIDTH	beamforming_sounding_bw(struct beamforming_info *pBeamInfo...
  function BOOLEAN (line 632) | BOOLEAN	beamforming_select_beam_entry(struct beamforming_info *pBeamInfo)
  function BOOLEAN (line 655) | BOOLEAN	beamforming_start_fw(PADAPTER adapter, u8 idx)
  function beamforming_end_fw (line 677) | void	beamforming_end_fw(PADAPTER adapter)
  function BOOLEAN (line 686) | BOOLEAN	beamforming_start_period(PADAPTER adapter)
  function beamforming_end_period (line 712) | void	beamforming_end_period(PADAPTER adapter)
  function beamforming_notify (line 727) | void	beamforming_notify(PADAPTER adapter)
  function BOOLEAN (line 771) | BOOLEAN	beamforming_init_entry(PADAPTER	adapter, struct sta_info *psta, ...
  function beamforming_deinit_entry (line 865) | void	beamforming_deinit_entry(PADAPTER adapter, u8* ra)
  function beamforming_reset (line 878) | void	beamforming_reset(PADAPTER adapter)
  function beamforming_sounding_fail (line 898) | void beamforming_sounding_fail(PADAPTER Adapter)
  function beamforming_check_sounding_success (line 909) | void	beamforming_check_sounding_success(PADAPTER Adapter,BOOLEAN status)
  function beamforming_enter (line 934) | void	beamforming_enter(PADAPTER adapter, PVOID psta)
  function beamforming_leave (line 944) | void	beamforming_leave(PADAPTER adapter,u8* ra)
  function BEAMFORMING_CAP (line 954) | BEAMFORMING_CAP beamforming_get_beamform_cap(struct beamforming_info	*pB...
  function beamforming_watchdog (line 988) | void	beamforming_watchdog(PADAPTER Adapter)
  function u32 (line 1000) | u32	beamforming_get_report_frame(PADAPTER	 Adapter, union recv_frame *pr...
  function beamforming_get_ndpa_frame (line 1048) | void	beamforming_get_ndpa_frame(PADAPTER	 Adapter, union recv_frame *pre...
  function beamforming_wk_hdl (line 1125) | void	beamforming_wk_hdl(_adapter *padapter, u8 type, u8 *pbuf)
  function u8 (line 1173) | u8	beamforming_wk_cmd(_adapter*padapter, s32 type, u8 *pbuf, s32 size, u...
  function update_attrib_txbf_info (line 1235) | void update_attrib_txbf_info(_adapter *padapter, struct pkt_attrib *patt...

FILE: core/rtw_br_ext.c
  type pppoe_hdr (line 89) | struct pppoe_hdr
  function __nat25_add_pppoe_tag (line 107) | static __inline__ int __nat25_add_pppoe_tag(struct sk_buff *skb, struct ...
  function skb_pull_and_merge (line 126) | static int skb_pull_and_merge(struct sk_buff *skb, unsigned char *src, i...
  function __nat25_timeout (line 147) | static __inline__ unsigned long __nat25_timeout(_adapter *priv)
  function __nat25_has_expired (line 157) | static __inline__ int  __nat25_has_expired(_adapter *priv,
  function __nat25_generate_ipv4_network_addr (line 167) | static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char ...
  function __nat25_generate_ipx_network_addr_with_node (line 177) | static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsig...
  function __nat25_generate_ipx_network_addr_with_socket (line 188) | static __inline__ void __nat25_generate_ipx_network_addr_with_socket(uns...
  function __nat25_generate_apple_network_addr (line 199) | static __inline__ void __nat25_generate_apple_network_addr(unsigned char...
  function __nat25_generate_pppoe_network_addr (line 210) | static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char...
  function __nat25_generate_ipv6_network_addr (line 222) | static  void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr,
  function update_nd_link_layer_addr (line 245) | static int update_nd_link_layer_addr(unsigned char *data, int len, unsig...
  function convert_ipv6_mac_to_mc (line 314) | static void convert_ipv6_mac_to_mc(struct sk_buff *skb)
  function __nat25_network_hash (line 333) | static __inline__ int __nat25_network_hash(unsigned char *networkAddr)
  function __network_hash_link (line 394) | static __inline__ void __network_hash_link(_adapter *priv,
  function __network_hash_unlink (line 411) | static __inline__ void __network_hash_unlink(struct nat25_network_db_ent...
  function __nat25_db_network_lookup_and_replace (line 427) | static int __nat25_db_network_lookup_and_replace(_adapter *priv,
  function __nat25_db_network_insert (line 504) | static void __nat25_db_network_insert(_adapter *priv,
  function __nat25_db_print (line 544) | static void __nat25_db_print(_adapter *priv)
  function nat25_db_cleanup (line 633) | void nat25_db_cleanup(_adapter *priv)
  function nat25_db_expire (line 664) | void nat25_db_expire(_adapter *priv)
  function checkIPMcAndReplace (line 758) | static int checkIPMcAndReplace(_adapter *priv, struct sk_buff *skb, unsi...
  function nat25_db_handle (line 785) | int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
  function nat25_handle_frame (line 1486) | int nat25_handle_frame(_adapter *priv, struct sk_buff *skb)
  function mac_clone (line 1570) | void mac_clone(_adapter *priv, unsigned char *addr)
  function mac_clone_handle_frame (line 1581) | int mac_clone_handle_frame(_adapter *priv, struct sk_buff *skb)
  type dhcpMessage (line 1606) | struct dhcpMessage {
  function dhcp_flag_bcast (line 1625) | void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb)
  type nat25_network_db_entry (line 1676) | struct nat25_network_db_entry

FILE: core/rtw_bt_mp.c
  function MPh2c_timeout_handle (line 30) | void MPh2c_timeout_handle(void *FunctionContext)
  function u32 (line 51) | u32 WaitC2Hevent(PADAPTER pAdapter, u8 *C2H_event, u32 delay_time)
  function BT_CTRL_STATUS (line 79) | BT_CTRL_STATUS
  function BT_CTRL_STATUS (line 108) | BT_CTRL_STATUS
  function BT_CTRL_STATUS (line 175) | BT_CTRL_STATUS
  function BT_CTRL_STATUS (line 212) | BT_CTRL_STATUS
  function u2Byte (line 280) | u2Byte
  function mptbt_close_WiFiRF (line 392) | void mptbt_close_WiFiRF(PADAPTER Adapter)
  function mptbt_open_WiFiRF (line 399) | void mptbt_open_WiFiRF(PADAPTER	Adapter)
  function u4Byte (line 406) | u4Byte mptbt_switch_RF(PADAPTER	Adapter, u1Byte	Enter)
  function u2Byte (line 436) | u2Byte
  function VOID (line 511) | VOID
  function u2Byte (line 592) | u2Byte
  function u2Byte (line 932) | u2Byte
  function u2Byte (line 1256) | u2Byte
  function u2Byte (line 1564) | u2Byte
  function u2Byte (line 1637) | u2Byte
  function VOID (line 1677) | VOID

FILE: core/rtw_btcoex.c
  function rtw_btcoex_Initialize (line 27) | void rtw_btcoex_Initialize(PADAPTER padapter)
  function rtw_btcoex_PowerOnSetting (line 32) | void rtw_btcoex_PowerOnSetting(PADAPTER padapter)
  function rtw_btcoex_PreLoadFirmware (line 37) | void rtw_btcoex_PreLoadFirmware(PADAPTER padapter)
  function rtw_btcoex_HAL_Initialize (line 42) | void rtw_btcoex_HAL_Initialize(PADAPTER padapter, u8 bWifiOnly)
  function rtw_btcoex_IpsNotify (line 47) | void rtw_btcoex_IpsNotify(PADAPTER padapter, u8 type)
  function rtw_btcoex_LpsNotify (line 58) | void rtw_btcoex_LpsNotify(PADAPTER padapter, u8 type)
  function rtw_btcoex_ScanNotify (line 69) | void rtw_btcoex_ScanNotify(PADAPTER padapter, u8 type)
  function rtw_btcoex_ConnectNotify (line 98) | void rtw_btcoex_ConnectNotify(PADAPTER padapter, u8 action)
  function rtw_btcoex_MediaStatusNotify (line 127) | void rtw_btcoex_MediaStatusNotify(PADAPTER padapter, u8 mediaStatus)
  function rtw_btcoex_SpecialPacketNotify (line 162) | void rtw_btcoex_SpecialPacketNotify(PADAPTER padapter, u8 pktType)
  function rtw_btcoex_IQKNotify (line 173) | void rtw_btcoex_IQKNotify(PADAPTER padapter, u8 state)
  function rtw_btcoex_BtInfoNotify (line 184) | void rtw_btcoex_BtInfoNotify(PADAPTER padapter, u8 length, u8 *tmpBuf)
  function rtw_btcoex_SuspendNotify (line 195) | void rtw_btcoex_SuspendNotify(PADAPTER padapter, u8 state)
  function rtw_btcoex_HaltNotify (line 206) | void rtw_btcoex_HaltNotify(PADAPTER padapter)
  function rtw_btcoex_SwitchBtTRxMask (line 232) | void rtw_btcoex_SwitchBtTRxMask(PADAPTER padapter)
  function rtw_btcoex_Switch (line 237) | void rtw_btcoex_Switch(PADAPTER padapter, u8 enable)
  function u8 (line 242) | u8 rtw_btcoex_IsBtDisabled(PADAPTER padapter)
  function rtw_btcoex_Handler (line 247) | void rtw_btcoex_Handler(PADAPTER padapter)
  function s32 (line 266) | s32 rtw_btcoex_IsBTCoexRejectAMPDU(PADAPTER padapter)
  function s32 (line 275) | s32 rtw_btcoex_IsBTCoexCtrlAMPDUSize(PADAPTER padapter)
  function u32 (line 284) | u32 rtw_btcoex_GetAMPDUSize(PADAPTER padapter)
  function rtw_btcoex_SetManualControl (line 293) | void rtw_btcoex_SetManualControl(PADAPTER padapter, u8 manual)
  function u8 (line 305) | u8 rtw_btcoex_1Ant(PADAPTER padapter)
  function u8 (line 310) | u8 rtw_btcoex_IsBtControlLps(PADAPTER padapter)
  function u8 (line 315) | u8 rtw_btcoex_IsLpsOn(PADAPTER padapter)
  function u8 (line 320) | u8 rtw_btcoex_RpwmVal(PADAPTER padapter)
  function u8 (line 325) | u8 rtw_btcoex_LpsVal(PADAPTER padapter)
  function rtw_btcoex_SetBTCoexist (line 330) | void rtw_btcoex_SetBTCoexist(PADAPTER padapter, u8 bBtExist)
  function rtw_btcoex_SetChipType (line 335) | void rtw_btcoex_SetChipType(PADAPTER padapter, u8 chipType)
  function rtw_btcoex_SetPGAntNum (line 340) | void rtw_btcoex_SetPGAntNum(PADAPTER padapter, u8 antNum)
  function u8 (line 345) | u8 rtw_btcoex_GetPGAntNum(PADAPTER padapter)
  function rtw_btcoex_SetSingleAntPath (line 350) | void rtw_btcoex_SetSingleAntPath(PADAPTER padapter, u8 singleAntPath)
  function u32 (line 355) | u32 rtw_btcoex_GetRaMask(PADAPTER padapter)
  function rtw_btcoex_RecordPwrMode (line 360) | void rtw_btcoex_RecordPwrMode(PADAPTER padapter, u8 *pCmdBuf, u8 cmdLen)
  function rtw_btcoex_DisplayBtCoexInfo (line 365) | void rtw_btcoex_DisplayBtCoexInfo(PADAPTER padapter, u8 *pbuf, u32 bufsize)
  function rtw_btcoex_SetDBG (line 370) | void rtw_btcoex_SetDBG(PADAPTER padapter, u32 *pDbgModule)
  function u32 (line 375) | u32 rtw_btcoex_GetDBG(PADAPTER padapter, u8 *pStrBuf, u32 bufSize)
  function u8 (line 380) | u8 rtw_btcoex_IncreaseScanDeviceNum(PADAPTER padapter)
  function u8 (line 385) | u8 rtw_btcoex_IsBtLinkExist(PADAPTER padapter)
  function rtw_btcoex_SetBtPatchVersion (line 390) | void rtw_btcoex_SetBtPatchVersion(PADAPTER padapter,u16 btHciVer, u16 bt...
  function rtw_btcoex_SetHciVersion (line 395) | void rtw_btcoex_SetHciVersion(PADAPTER  padapter, u16 hciVersion)
  function rtw_btcoex_StackUpdateProfileInfo (line 400) | void rtw_btcoex_StackUpdateProfileInfo(void)
  function rtw_btcoex_BTOffOnNotify (line 405) | void rtw_btcoex_BTOffOnNotify(PADAPTER padapter, u8 bBTON)
  function rtw_btcoex_rx_ampdu_apply (line 413) | void rtw_btcoex_rx_ampdu_apply(PADAPTER padapter)
  function rtw_btcoex_LPS_Enter (line 418) | void rtw_btcoex_LPS_Enter(PADAPTER padapter)
  function rtw_btcoex_LPS_Leave (line 431) | void rtw_btcoex_LPS_Leave(PADAPTER padapter)
  function u8 (line 453) | u8 rtw_btcoex_btinfo_cmd(_adapter *adapter, u8 *buf, u16 len)
  function u8 (line 497) | u8 rtw_btcoex_send_event_to_BT(_adapter *padapter, u8 status,  u8 event_...
  function u8 (line 539) | u8 rtw_btcoex_parse_BT_info_notify_cmd(_adapter *padapter, u8 *pcmd, u16...
  function u8 (line 615) | u8 rtw_btcoex_parse_BT_patch_ver_info_cmd(_adapter *padapter, u8 *pcmd, ...
  function u8 (line 665) | u8 rtw_btcoex_parse_HCI_Ver_notify_cmd(_adapter *padapter, u8 *pcmd, u16...
  function u8 (line 716) | u8 rtw_btcoex_parse_WIFI_scan_notify_cmd(_adapter *padapter, u8 *pcmd, u...
  function u8 (line 757) | u8 rtw_btcoex_parse_HCI_link_status_notify_cmd(_adapter *padapter, u8 *p...
  function u8 (line 872) | u8 rtw_btcoex_parse_HCI_BT_coex_notify_cmd(_adapter *padapter, u8 *pcmd,...
  function u8 (line 906) | u8 rtw_btcoex_parse_HCI_BT_operation_notify_cmd(_adapter *padapter, u8 *...
  function u8 (line 980) | u8 rtw_btcoex_parse_BT_AFH_MAP_notify_cmd(_adapter *padapter, u8 *pcmd, ...
  function u8 (line 1014) | u8 rtw_btcoex_parse_BT_register_val_notify_cmd(_adapter *padapter, u8 *p...
  function u8 (line 1049) | u8 rtw_btcoex_parse_HCI_BT_abnormal_notify_cmd(_adapter *padapter, u8 *p...
  function u8 (line 1083) | u8 rtw_btcoex_parse_HCI_query_RF_status_cmd(_adapter *padapter, u8 *pcmd...
  function rtw_btcoex_parse_hci_extend_cmd (line 1128) | void rtw_btcoex_parse_hci_extend_cmd(_adapter *padapter, u8 *pcmd, u16 l...
  function rtw_btcoex_parse_hci_cmd (line 1188) | void rtw_btcoex_parse_hci_cmd(_adapter *padapter, u8 *pcmd, u16 len)
  function u16 (line 1210) | u16 rtw_btcoex_parse_recv_data(u8 *msg, u8 msg_size)
  function rtw_btcoex_recvmsgbysocket (line 1246) | void rtw_btcoex_recvmsgbysocket(void *data)
  type sock (line 1381) | struct sock
  function rtw_btcoex_recvmsg_init (line 1383) | void rtw_btcoex_recvmsg_init(struct sock *sk_in)
  function u8 (line 1400) | u8 rtw_btcoex_sendmsgbysocket(_adapter *padapter, u8 *msg, u8 msg_size, ...
  function u8 (line 1450) | u8 rtw_btcoex_create_kernel_socket(_adapter *padapter)
  function rtw_btcoex_close_kernel_socket (line 1504) | void rtw_btcoex_close_kernel_socket(_adapter *padapter)
  function rtw_btcoex_init_socket (line 1518) | void rtw_btcoex_init_socket(_adapter *padapter)
  function rtw_btcoex_close_socket (line 1545) | void rtw_btcoex_close_socket(_adapter *padapter)
  function rtw_btcoex_dump_tx_msg (line 1568) | void rtw_btcoex_dump_tx_msg(u8 *tx_msg, u8 len, u8 *msg_name)
  function rtw_btcoex_SendEventExtBtCoexControl (line 1581) | void rtw_btcoex_SendEventExtBtCoexControl(PADAPTER padapter, u8 bNeedDbg...
  function rtw_btcoex_SendEventExtBtInfoControl (line 1621) | void rtw_btcoex_SendEventExtBtInfoControl(PADAPTER padapter, u8 dataLen,...
  function rtw_btcoex_SendScanNotify (line 1663) | void rtw_btcoex_SendScanNotify(PADAPTER padapter, u8 scanType)

FILE: core/rtw_cmd.c
  function sint (line 30) | sint	_rtw_init_cmd_priv (struct	cmd_priv *pcmdpriv)
  function sint (line 79) | sint _rtw_init_evt_priv(struct evt_priv *pevtpriv)
  function _rtw_free_evt_priv (line 147) | void _rtw_free_evt_priv (struct	evt_priv *pevtpriv)
  function _rtw_free_cmd_priv (line 183) | void _rtw_free_cmd_priv (struct	cmd_priv *pcmdpriv)
  function sint (line 217) | sint	_rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj)
  type cmd_obj (line 282) | struct	cmd_obj
  type cmd_obj (line 285) | struct cmd_obj
  type drvextra_cmd_parm (line 328) | struct drvextra_cmd_parm
  type drvextra_cmd_parm (line 328) | struct drvextra_cmd_parm
  function u32 (line 347) | u32	rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
  function u32 (line 356) | u32	rtw_init_evt_priv (struct	evt_priv *pevtpriv)
  function rtw_free_evt_priv (line 365) | void rtw_free_evt_priv (struct	evt_priv *pevtpriv)
  function rtw_free_cmd_priv (line 373) | void rtw_free_cmd_priv (struct	cmd_priv *pcmdpriv)
  type cmd_priv (line 381) | struct cmd_priv
  type cmd_obj (line 381) | struct cmd_obj
  function rtw_cmd_filter (line 382) | int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
  function u32 (line 433) | u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
  type cmd_obj (line 469) | struct	cmd_obj
  type cmd_priv (line 469) | struct cmd_priv
  type cmd_obj (line 471) | struct cmd_obj
  function rtw_cmd_clr_isr (line 481) | void rtw_cmd_clr_isr(struct	cmd_priv *pcmdpriv)
  function rtw_free_cmd_obj (line 489) | void rtw_free_cmd_obj(struct cmd_obj *pcmd)
  function rtw_stop_cmd_thread (line 514) | void rtw_stop_cmd_thread(_adapter *adapter)
  function thread_return (line 526) | thread_return rtw_cmd_thread(thread_context context)
  function u32 (line 743) | u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj)
  type evt_obj (line 773) | struct evt_obj
  type evt_obj (line 776) | struct	evt_obj
  function rtw_free_evt_obj (line 797) | void rtw_free_evt_obj(struct evt_obj *pevtobj)
  function rtw_evt_notify_isr (line 809) | void rtw_evt_notify_isr(struct evt_priv *pevtpriv)
  function u8 (line 822) | u8 rtw_setstandby_cmd(_adapter *padapter, uint action)
  function u8 (line 863) | u8 rtw_sitesurvey_cmd(_adapter  *padapter, NDIS_802_11_SSID *ssid, int s...
  function u8 (line 967) | u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset)
  function u8 (line 1005) | u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset)
  function u8 (line 1047) | u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch)
  function u8 (line 1084) | u8 rtw_getmacreg_cmd(_adapter *padapter, u8 len, u32 addr)
  function rtw_usb_catc_trigger_cmd (line 1117) | void rtw_usb_catc_trigger_cmd(_adapter *padapter, const char *caller)
  function u8 (line 1123) | u8 rtw_setbbreg_cmd(_adapter*padapter, u8 offset, u8 val)
  function u8 (line 1154) | u8 rtw_getbbreg_cmd(_adapter  *padapter, u8 offset, u8 *pval)
  function u8 (line 1189) | u8 rtw_setrfreg_cmd(_adapter  *padapter, u8 offset, u32 val)
  function u8 (line 1220) | u8 rtw_getrfreg_cmd(_adapter  *padapter, u8 offset, u8 *pval)
  function rtw_getbbrfreg_cmdrsp_callback (line 1260) | void rtw_getbbrfreg_cmdrsp_callback(_adapter*	padapter,  struct cmd_obj ...
  function rtw_readtssi_cmdrsp_callback (line 1275) | void rtw_readtssi_cmdrsp_callback(_adapter*	padapter,  struct cmd_obj *p...
  function u8 (line 1290) | static u8 rtw_createbss_cmd(_adapter  *adapter, int flags, bool adhoc
  function u8 (line 1353) | inline u8 rtw_create_ibss_cmd(_adapter *adapter, int flags)
  function u8 (line 1361) | inline u8 rtw_startbss_cmd(_adapter *adapter, int flags)
  function u8 (line 1369) | inline u8 rtw_change_bss_chbw_cmd(_adapter *adapter, int flags, u8 req_c...
  function u8 (line 1377) | u8 rtw_joinbss_cmd(_adapter  *padapter, struct wlan_network* pnetwork)
  function u8 (line 1596) | u8 rtw_disassoc_cmd(_adapter*padapter, u32 deauth_timeout_ms, bool enque...
  function u8 (line 1639) | u8 rtw_setopmode_cmd(_adapter  *padapter, NDIS_802_11_NETWORK_INFRASTRUC...
  function u8 (line 1678) | u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_ty...
  function u8 (line 1754) | u8 rtw_clearstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 enqu...
  function u8 (line 1817) | u8 rtw_setrttbl_cmd(_adapter  *padapter, struct setratable_parm *prate_t...
  function u8 (line 1849) | u8 rtw_getrttbl_cmd(_adapter  *padapter, struct getratable_rsp *pval)
  function u8 (line 1888) | u8 rtw_setassocsta_cmd(_adapter  *padapter, u8 *mac_addr)
  function u8 (line 1934) | u8 rtw_addbareq_cmd(_adapter*padapter, u8 tid, u8 *addr)
  function u8 (line 1974) | u8 rtw_reset_securitypriv_cmd(_adapter*padapter)
  function u8 (line 2015) | u8 rtw_free_assoc_resources_cmd(_adapter*padapter)
  function u8 (line 2056) | u8 rtw_dynamic_chk_wk_cmd(_adapter*padapter)
  function u8 (line 2104) | u8 rtw_set_ch_cmd(_adapter*padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqu...
  function u8 (line 2159) | u8 rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, u8 swconfig)
  function u8 (line 2234) | u8 rtw_led_blink_cmd(_adapter*padapter, PVOID pLed)
  function u8 (line 2271) | u8 rtw_set_csa_cmd(_adapter*padapter, u8 new_ch_no)
  function u8 (line 2309) | u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option)
  function collect_traffic_statistics (line 2355) | static void collect_traffic_statistics(_adapter *padapter)
  function u8 (line 2401) | u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer)
  function dynamic_chk_wk_hdl (line 2636) | void dynamic_chk_wk_hdl(_adapter *padapter)
  function lps_ctrl_wk_hdl (line 2697) | void lps_ctrl_wk_hdl(_adapter *padapter, u8 lps_ctrl_type)
  function u8 (line 2778) | u8 rtw_lps_ctrl_wk_cmd(_adapter*padapter, u8 lps_ctrl_type, u8 enqueue)
  function rtw_dm_in_lps_hdl (line 2828) | void rtw_dm_in_lps_hdl(_adapter*padapter)
  function u8 (line 2833) | u8 rtw_dm_in_lps_wk_cmd(_adapter*padapter)
  function rtw_lps_change_dtim_hdl (line 2869) | void rtw_lps_change_dtim_hdl(_adapter *padapter, u8 dtim)
  function u8 (line 2910) | u8 rtw_lps_change_dtim_cmd(_adapter*padapter, u8 dtim)
  function rpt_timer_setting_wk_hdl (line 2953) | void rpt_timer_setting_wk_hdl(_adapter *padapter, u16 minRptTime)
  function u8 (line 2958) | u8 rtw_rpt_timer_cfg_cmd(_adapter*padapter, u16 minRptTime)
  function antenna_select_wk_hdl (line 2997) | void antenna_select_wk_hdl(_adapter *padapter, u8 antenna)
  function u8 (line 3002) | u8 rtw_antenna_select_cmd(_adapter*padapter, u8 antenna,u8 enqueue)
  function rtw_dm_ra_mask_hdl (line 3049) | void rtw_dm_ra_mask_hdl(_adapter *padapter, struct sta_info *psta)
  function u8 (line 3056) | u8 rtw_dm_ra_mask_wk_cmd(_adapter*padapter, u8 *psta)
  function power_saving_wk_hdl (line 3092) | void power_saving_wk_hdl(_adapter *padapter)
  function reset_securitypriv_hdl (line 3098) | void reset_securitypriv_hdl(_adapter *padapter)
  function free_assoc_resources_hdl (line 3103) | void free_assoc_resources_hdl(_adapter *padapter)
  function u8 (line 3109) | u8 p2p_protocol_wk_cmd(_adapter*padapter, int intCmdType )
  function u8 (line 3155) | u8 rtw_ps_cmd(_adapter*padapter)
  function rtw_chk_hi_queue_hdl (line 3200) | static void rtw_chk_hi_queue_hdl(_adapter *padapter)
  function u8 (line 3243) | u8 rtw_chk_hi_queue_cmd(_adapter*padapter)
  function u8 (line 3279) | u8 rtw_dfs_master_hdl(_adapter *adapter)
  function u8 (line 3352) | u8 rtw_dfs_master_cmd(_adapter *adapter, bool enqueue)
  function rtw_dfs_master_timer_hdl (line 3386) | void rtw_dfs_master_timer_hdl(RTW_TIMER_HDL_ARGS)
  function rtw_dfs_master_enable (line 3393) | void rtw_dfs_master_enable(_adapter *adapter, u8 ch, u8 bw, u8 offset)
  function rtw_dfs_master_disable (line 3431) | void rtw_dfs_master_disable(_adapter *adapter, bool ld_sta_in_dfs)
  function rtw_dfs_master_status_apply (line 3462) | void rtw_dfs_master_status_apply(_adapter *adapter, u8 self_action)
  type btinfo (line 3544) | struct btinfo {
  function btinfo_evt_dump (line 3578) | void btinfo_evt_dump(void *sel, void *buf)
  function rtw_btinfo_hdl (line 3609) | static void rtw_btinfo_hdl(_adapter *adapter, u8 *buf, u16 buf_len)
  function u8 (line 3652) | u8 rtw_btinfo_cmd(_adapter *adapter, u8 *buf, u16 len)
  function u8 (line 3698) | u8 rtw_c2h_packet_wk_cmd(PADAPTER padapter, u8 *pbuf, u16 length)
  function u8 (line 3735) | u8 rtw_c2h_wk_cmd(PADAPTER padapter, u8 *c2h_evt)
  function u8 (line 3770) | u8 rtw_run_in_thread_cmd(PADAPTER padapter, void (*func)(void*), void* c...
  function s32 (line 3806) | s32 c2h_evt_hdl(_adapter *adapter, u8 *c2h_evt, c2h_id_filter filter)
  function c2h_wk_callback (line 3833) | static void c2h_wk_callback(_workitem *work)
  function u8 (line 3880) | u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf)
  function rtw_survey_cmd_callback (line 3990) | void rtw_survey_cmd_callback(_adapter*	padapter ,  struct cmd_obj *pcmd)
  function rtw_disassoc_cmd_callback (line 4012) | void rtw_disassoc_cmd_callback(_adapter*	padapter,  struct cmd_obj *pcmd)
  function rtw_getmacreg_cmdrsp_callback (line 4043) | void rtw_getmacreg_cmdrsp_callback(_adapter *padapter,  struct cmd_obj *...
  function rtw_joinbss_cmd_callback (line 4053) | void rtw_joinbss_cmd_callback(_adapter*	padapter,  struct cmd_obj *pcmd)
  function rtw_create_ibss_post_hdl (line 4075) | void rtw_create_ibss_post_hdl(_adapter *padapter, int status)
  function rtw_setstaKey_cmdrsp_callback (line 4135) | void rtw_setstaKey_cmdrsp_callback(_adapter*	padapter ,  struct cmd_obj ...
  function rtw_setassocsta_cmdrsp_callback (line 4159) | void rtw_setassocsta_cmdrsp_callback(_adapter*	padapter,  struct cmd_obj...
  type cmd_obj (line 4192) | struct cmd_obj
  function rtw_getrttbl_cmd_cmdrsp_callback (line 4193) | void rtw_getrttbl_cmd_cmdrsp_callback(_adapter*	padapter,  struct cmd_ob...

FILE: core/rtw_debug.c
  function dump_drv_version (line 68) | void dump_drv_version(void *sel)
  function dump_drv_cfg (line 74) | void dump_drv_cfg(void *sel)
  function dump_log_level (line 182) | void dump_log_level(void *sel)
  function sd_f0_reg_dump (line 188) | void sd_f0_reg_dump(void *sel, _adapter *adapter)
  function sdio_local_reg_dump (line 206) | void sdio_local_reg_dump(void *sel, _adapter *adapter)
  function mac_reg_dump (line 220) | void mac_reg_dump(void *sel, _adapter *adapter)
  function bb_reg_dump (line 249) | void bb_reg_dump(void *sel, _adapter *adapter)
  function rf_reg_dump (line 264) | void rf_reg_dump(void *sel, _adapter *adapter)
  function rtw_fwdl_test_trigger_chksum_fail (line 295) | bool rtw_fwdl_test_trigger_chksum_fail(void)
  function rtw_fwdl_test_trigger_wintint_rdy_fail (line 305) | bool rtw_fwdl_test_trigger_wintint_rdy_fail(void)
  function u32 (line 317) | u32 rtw_get_wait_hiq_empty_ms(void)
  function rtw_del_rx_ampdu_test_trigger_no_tx_fail (line 324) | bool rtw_del_rx_ampdu_test_trigger_no_tx_fail(void)
  function rtw_sink_rtp_seq_dbg (line 334) | void rtw_sink_rtp_seq_dbg( _adapter *adapter,_pkt *pkt)
  function sta_rx_reorder_ctl_dump (line 349) | void sta_rx_reorder_ctl_dump(void *sel, struct sta_info *sta)
  function dump_adapters_status (line 364) | void dump_adapters_status(void *sel, struct dvobj_priv *dvobj)
  function dump_sec_cam_ent (line 443) | void dump_sec_cam_ent(void *sel, struct sec_cam_ent *ent, int id)
  function dump_sec_cam_ent_title (line 453) | void dump_sec_cam_ent_title(void *sel, u8 has_id)
  function dump_sec_cam (line 463) | void dump_sec_cam(void *sel, _adapter *adapter)
  function proc_set_write_reg (line 479) | ssize_t proc_set_write_reg(struct file *file, const char __user *buffer,...
  function proc_get_read_reg (line 531) | int proc_get_read_reg(struct seq_file *m, void *v)
  function proc_set_read_reg (line 560) | ssize_t proc_set_read_reg(struct file *file, const char __user *buffer, ...
  function proc_get_fwstate (line 595) | int proc_get_fwstate(struct seq_file *m, void *v)
  function proc_get_sec_info (line 606) | int proc_get_sec_info(struct seq_file *m, void *v)
  function proc_get_mlmext_state (line 638) | int proc_get_mlmext_state(struct seq_file *m, void *v)
  function proc_get_roam_flags (line 651) | int proc_get_roam_flags(struct seq_file *m, void *v)
  function proc_set_roam_flags (line 661) | ssize_t proc_set_roam_flags(struct file *file, const char __user *buffer...
  function proc_get_roam_param (line 689) | int proc_get_roam_param(struct seq_file *m, void *v)
  function proc_set_roam_param (line 705) | ssize_t proc_set_roam_param(struct file *file, const char __user *buffer...
  function proc_set_roam_tgt_addr (line 740) | ssize_t proc_set_roam_tgt_addr(struct file *file, const char __user *buf...
  function proc_get_qos_option (line 769) | int proc_get_qos_option(struct seq_file *m, void *v)
  function proc_get_ht_option (line 780) | int proc_get_ht_option(struct seq_file *m, void *v)
  function proc_get_rf_info (line 793) | int proc_get_rf_info(struct seq_file *m, void *v)
  function proc_get_scan_param (line 808) | int proc_get_scan_param(struct seq_file *m, void *v)
  function proc_set_scan_param (line 865) | ssize_t proc_set_scan_param(struct file *file, const char __user *buffer...
  function proc_get_scan_abort (line 934) | int proc_get_scan_abort(struct seq_file *m, void *v)
  function proc_get_backop_flags_sta (line 948) | int proc_get_backop_flags_sta(struct seq_file *m, void *v)
  function proc_set_backop_flags_sta (line 959) | ssize_t proc_set_backop_flags_sta(struct file *file, const char __user *...
  function proc_get_backop_flags_ap (line 987) | int proc_get_backop_flags_ap(struct seq_file *m, void *v)
  function proc_set_backop_flags_ap (line 998) | ssize_t proc_set_backop_flags_ap(struct file *file, const char __user *b...
  function proc_get_survey_info (line 1028) | int proc_get_survey_info(struct seq_file *m, void *v)
  function proc_set_survey_info (line 1106) | ssize_t proc_set_survey_info(struct file *file, const char __user *buffe...
  function proc_get_ap_info (line 1182) | int proc_get_ap_info(struct seq_file *m, void *v)
  function proc_reset_trx_info (line 1226) | ssize_t proc_reset_trx_info(struct file *file, const char __user *buffer...
  function proc_get_trx_info (line 1256) | int proc_get_trx_info(struct seq_file *m, void *v)
  function proc_get_dis_pwt (line 1300) | int proc_get_dis_pwt(struct seq_file *m, void *v)
  function proc_set_dis_pwt (line 1309) | ssize_t proc_set_dis_pwt(struct file *file, const char __user *buffer, s...
  function proc_get_rate_ctl (line 1337) | int proc_get_rate_ctl(struct seq_file *m, void *v)
  function proc_set_rate_ctl (line 1361) | ssize_t proc_set_rate_ctl(struct file *file, const char __user *buffer, ...
  function proc_get_rx_cnt_dump (line 1390) | int proc_get_rx_cnt_dump(struct seq_file *m, void *v)
  function proc_set_rx_cnt_dump (line 1404) | ssize_t proc_set_rx_cnt_dump(struct file *file, const char __user *buffe...
  function proc_set_fwdl_test_case (line 1431) | ssize_t proc_set_fwdl_test_case(struct file *file, const char __user *bu...
  function proc_set_del_rx_ampdu_test_case (line 1452) | ssize_t proc_set_del_rx_ampdu_test_case(struct file *file, const char __...
  function proc_get_dfs_master_test_case (line 1474) | int proc_get_dfs_master_test_case(struct seq_file *m, void *v)
  function proc_set_dfs_master_test_case (line 1489) | ssize_t proc_set_dfs_master_test_case(struct file *file, const char __us...
  function proc_set_wait_hiq_empty (line 1519) | ssize_t proc_set_wait_hiq_empty(struct file *file, const char __user *bu...
  function proc_get_suspend_resume_info (line 1540) | int proc_get_suspend_resume_info(struct seq_file *m, void *v)
  function proc_get_rx_logs (line 1581) | int proc_get_rx_logs(struct seq_file *m, void *v)
  function proc_get_tx_logs (line 1679) | int proc_get_tx_logs(struct seq_file *m, void *v)
  function proc_get_int_logs (line 1795) | int proc_get_int_logs(struct seq_file *m, void *v)
  function proc_get_hw_status (line 1842) | int proc_get_hw_status(struct seq_file *m, void *v)
  function proc_get_rx_signal (line 1862) | int proc_get_rx_signal(struct seq_file *m, void *v)
  function proc_set_rx_signal (line 1882) | ssize_t proc_set_rx_signal(struct file *file, const char __user *buffer,...
  function proc_get_ht_enable (line 1923) | int proc_get_ht_enable(struct seq_file *m, void *v)
  function proc_set_ht_enable (line 1935) | ssize_t proc_set_ht_enable(struct file *file, const char __user *buffer,...
  function proc_get_bw_mode (line 1966) | int proc_get_bw_mode(struct seq_file *m, void *v)
  function proc_set_bw_mode (line 1978) | ssize_t proc_set_bw_mode(struct file *file, const char __user *buffer, s...
  function proc_get_ampdu_enable (line 2011) | int proc_get_ampdu_enable(struct seq_file *m, void *v)
  function proc_set_ampdu_enable (line 2023) | ssize_t proc_set_ampdu_enable(struct file *file, const char __user *buff...
  function proc_get_mac_rptbuf (line 2055) | int proc_get_mac_rptbuf(struct seq_file *m, void *v)
  function proc_get_rx_ampdu (line 2085) | int proc_get_rx_ampdu(struct seq_file *m, void *v)
  function proc_set_rx_ampdu (line 2111) | ssize_t proc_set_rx_ampdu(struct file *file, const char __user *buffer, ...
  function proc_get_rx_ampdu_factor (line 2145) | int proc_get_rx_ampdu_factor(struct seq_file *m, void *v)
  function proc_set_rx_ampdu_factor (line 2159) | ssize_t proc_set_rx_ampdu_factor(struct file *file, const char __user *b...
  function proc_get_rx_ampdu_density (line 2193) | int proc_get_rx_ampdu_density(struct seq_file *m, void *v)
  function proc_set_rx_ampdu_density (line 2207) | ssize_t proc_set_rx_ampdu_density(struct file *file, const char __user *...
  function proc_get_tx_ampdu_density (line 2240) | int proc_get_tx_ampdu_density(struct seq_file *m, void *v)
  function proc_set_tx_ampdu_density (line 2254) | ssize_t proc_set_tx_ampdu_density(struct file *file, const char __user *...
  function proc_get_en_fwps (line 2288) | int proc_get_en_fwps(struct seq_file *m, void *v)
  function proc_set_en_fwps (line 2303) | ssize_t proc_set_en_fwps(struct file *file, const char __user *buffer, s...
  function proc_get_rx_stbc (line 2350) | int proc_get_rx_stbc(struct seq_file *m, void *v)
  function proc_set_rx_stbc (line 2362) | ssize_t proc_set_rx_stbc(struct file *file, const char __user *buffer, s...
  function proc_get_all_sta_info (line 2448) | int proc_get_all_sta_info(struct seq_file *m, void *v)
  function proc_get_rtkm_info (line 2524) | int proc_get_rtkm_info(struct seq_file *m, void *v)
  function proc_get_malloc_cnt (line 2550) | int proc_get_malloc_cnt(struct seq_file *m, void *v)
  function proc_get_best_channel (line 2560) | int proc_get_best_channel(struct seq_file *m, void *v)
  function proc_set_best_channel (line 2615) | ssize_t proc_set_best_channel(struct file *file, const char __user *buff...
  function proc_get_btcoex_dbg (line 2645) | int proc_get_btcoex_dbg(struct seq_file *m, void *v)
  function proc_set_btcoex_dbg (line 2659) | ssize_t proc_set_btcoex_dbg(struct file *file, const char __user *buffer...
  function proc_get_btcoex_info (line 2723) | int proc_get_btcoex_info(struct seq_file *m, void *v)
  function proc_get_sreset (line 2748) | int proc_get_sreset(struct seq_file *m, void *v)
  function proc_set_sreset (line 2757) | ssize_t proc_set_sreset(struct file *file, const char __user *buffer, si...
  function proc_get_rx_ring (line 2789) | int proc_get_rx_ring(struct seq_file *m, void *v)
  function proc_get_tx_ring (line 2828) | int proc_get_tx_ring(struct seq_file *m, void *v)
  function proc_get_wowlan_gpio_info (line 2873) | int proc_get_wowlan_gpio_info(struct seq_file *m, void *v)
  function proc_set_wowlan_gpio_info (line 2886) | ssize_t proc_set_wowlan_gpio_info(struct file *file, const char __user *...
  function proc_get_p2p_wowlan_info (line 2930) | int proc_get_p2p_wowlan_info(struct seq_file *m, void *v)
  function proc_get_new_bcn_max (line 2966) | int proc_get_new_bcn_max(struct seq_file *m, void *v)
  function proc_set_new_bcn_max (line 2974) | ssize_t proc_set_new_bcn_max(struct file *file, const char __user *buffe...
  function proc_get_ps_info (line 2994) | int proc_get_ps_info(struct seq_file *m, void *v)
  function proc_tdls_display_tdls_function_info (line 3050) | static int proc_tdls_display_tdls_function_info(struct seq_file *m)
  function proc_tdls_display_network_info (line 3140) | static int proc_tdls_display_network_info(struct seq_file *m)
  function proc_tdls_display_tdls_sta_info (line 3268) | static int proc_tdls_display_tdls_sta_info(struct seq_file *m)
  function proc_get_tdls_info (line 3453) | int proc_get_tdls_info(struct seq_file *m, void *v)
  function proc_get_monitor (line 3479) | int proc_get_monitor(struct seq_file *m, void *v)
  function proc_set_monitor (line 3498) | ssize_t proc_set_monitor(struct file *file, const char __user *buffer, s...
  function proc_get_efuse_map (line 3531) | int proc_get_efuse_map(struct seq_file *m, void *v)
  function proc_set_efuse_map (line 3565) | ssize_t proc_set_efuse_map(struct file *file, const char __user *buffer,...
  function proc_set_tx_sa_query (line 3608) | ssize_t proc_set_tx_sa_query(struct file *file, const char __user *buffe...
  function proc_get_tx_sa_query (line 3678) | int proc_get_tx_sa_query(struct seq_file *m, void *v)
  function proc_set_tx_deauth (line 3687) | ssize_t proc_set_tx_deauth(struct file *file, const char __user *buffer,...
  function proc_get_tx_deauth (line 3783) | int proc_get_tx_deauth(struct seq_file *m, void *v)
  function proc_set_tx_auth (line 3792) | ssize_t proc_set_tx_auth(struct file *file, const char __user *buffer, s...
  function proc_get_tx_auth (line 3842) | int proc_get_tx_auth(struct seq_file *m, void *v)

FILE: core/rtw_eeprom.c
  function up_clk (line 26) | void up_clk(_adapter*	padapter,	 u16 *x)
  function down_clk (line 37) | void down_clk(_adapter *	padapter, u16 *x	)
  function shift_out_bits (line 46) | void shift_out_bits(_adapter * padapter, u16 data, u16 count)
  function u16 (line 85) | u16 shift_in_bits (_adapter * padapter)
  function standby (line 120) | void standby(_adapter *	padapter	)
  function u16 (line 136) | u16 wait_eeprom_cmd_done(_adapter* padapter)
  function eeprom_clean (line 156) | void eeprom_clean(_adapter * padapter)
  function eeprom_write16 (line 185) | void eeprom_write16(_adapter * padapter, u16 reg, u16 data)
  function u16 (line 269) | u16 eeprom_read16(_adapter * padapter, u16 reg) //ReadEEprom
  function eeprom_read_sz (line 334) | void eeprom_read_sz(_adapter * padapter, u16 reg, u8* data, u32 sz)
  function u8 (line 379) | u8 eeprom_read(_adapter * padapter, u32 addr_off, u8 sz, u8* rbuf)
  function VOID (line 415) | VOID read_eeprom_content(_adapter *	padapter)

FILE: core/rtw_ieee80211.c
  type rate_section_ent (line 104) | struct rate_section_ent
  function rtw_get_bit_value_from_ieee_value (line 117) | int rtw_get_bit_value_from_ieee_value(u8 val)
  function uint (line 130) | uint	rtw_is_cckrates_included(u8 *rate)
  function uint (line 145) | uint	rtw_is_cckratesonly_included(u8 *rate)
  function rtw_check_network_type (line 163) | int rtw_check_network_type(unsigned char *rate, int ratelen, int channel)
  function u8 (line 184) | u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned cha...
  function u8 (line 193) | u8 *rtw_set_ie
  function u8 (line 214) | inline u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode,
  function u8 (line 225) | inline u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset)
  function u8 (line 237) | inline u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset)
  function u8 (line 249) | inline u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 seco...
  function u8 (line 254) | inline u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl,
  function u8 (line 270) | u8 *rtw_get_ie(u8 *pbuf, sint index, sint *len, sint limit)
  function u8 (line 315) | u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u...
  function rtw_ies_remove_ie (line 365) | int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *o...
  function rtw_set_supported_rate (line 401) | void rtw_set_supported_rate(u8* SupportedRates, uint mode)
  function uint (line 433) | uint	rtw_get_rateset_len(u8	*rateset)
  function rtw_generate_ie (line 451) | int rtw_generate_ie(struct registry_priv *pregistrypriv)
  function rtw_get_wpa_cipher_suite (line 607) | int rtw_get_wpa_cipher_suite(u8 *s)
  function rtw_get_wpa2_cipher_suite (line 623) | int rtw_get_wpa2_cipher_suite(u8 *s)
  function rtw_parse_wpa_ie (line 640) | int rtw_parse_wpa_ie(u8* wpa_ie, int wpa_ie_len, int *group_cipher, int ...
  function rtw_parse_wpa2_ie (line 725) | int rtw_parse_wpa2_ie(u8* rsn_ie, int rsn_ie_len, int *group_cipher, int...
  function rtw_get_wapi_ie (line 805) | int rtw_get_wapi_ie(u8 *in_ie,uint in_len,u8 *wapi_ie,u16 *wapi_len)
  function rtw_get_sec_ie (line 862) | int rtw_get_sec_ie(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa...
  function u8 (line 930) | u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen)
  function u8 (line 948) | u8 *rtw_get_wps_ie_from_scan_queue(u8 *in_ie, uint in_len, u8 *wps_ie, u...
  function u8 (line 979) | u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
  function u8 (line 1035) | u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 ...
  function u8 (line 1093) | u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr...
  function rtw_ieee802_11_parse_vendor_specific (line 1117) | static int rtw_ieee802_11_parse_vendor_specific(u8 *pos, uint elen,
  function ParseRes (line 1222) | ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len,
  function u8 (line 1363) | static u8 key_char2num(u8 ch)
  function u8 (line 1376) | u8 str_2char2num(u8 hch, u8 lch)
  function u8 (line 1382) | u8 key_2char2num(u8 hch, u8 lch)
  function macstr2num (line 1388) | void macstr2num(u8 *dst, u8 *src)
  function u8 (line 1397) | u8 convert_ip_addr(u8 hch, u8 mch, u8 lch)
  function rtw_get_mac_addr_intel (line 1405) | int rtw_get_mac_addr_intel(unsigned char *buf)
  function u8 (line 1450) | u8 rtw_check_invalid_mac_address(u8 *mac_addr, u8 check_local_bit)
  function rtw_macaddr_cfg (line 1488) | void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr)
  function dump_ht_cap_ie_content (line 1544) | void dump_ht_cap_ie_content(void *sel, u8 *buf, u32 buf_len)
  function dump_ht_cap_ie (line 1558) | void dump_ht_cap_ie(void *sel, u8 *ie, u32 ie_len)
  function dump_ies (line 1575) | void dump_ies(void *sel, u8 *buf, u32 buf_len)
  function dump_wps_ie (line 1600) | void dump_wps_ie(void *sel, u8 *ie, u32 ie_len)
  function rtw_ies_get_chbw (line 1632) | void rtw_ies_get_chbw(u8 *ies, int ies_len, u8 *ch, u8 *bw, u8 *offset)
  function rtw_bss_get_chbw (line 1695) | void rtw_bss_get_chbw(WLAN_BSSID_EX *bss, u8 *ch, u8 *bw, u8 *offset)
  function rtw_is_chbw_grouped (line 1720) | bool rtw_is_chbw_grouped(u8 ch_a, u8 bw_a, u8 offset_a
  function rtw_sync_chbw (line 1750) | void rtw_sync_chbw(u8 *req_ch, u8 *req_bw, u8 *req_offset
  function u32 (line 1807) | u32 rtw_get_p2p_merged_ies_len(u8 *in_ie, u32 in_len)
  function rtw_p2p_merge_ies (line 1836) | int rtw_p2p_merge_ies(u8 *in_ie, u32 in_len, u8 *merge_ie)
  function dump_p2p_ie (line 1872) | void dump_p2p_ie(void *sel, u8 *ie, u32 ie_len) {
  function u8 (line 1895) | u8 *rtw_get_p2p_ie_from_scan_queue(u8 *in_ie, int in_len, u8 *p2p_ie, ui...
  function u8 (line 1926) | u8 *rtw_get_p2p_ie(u8 *in_ie, int in_len, u8 *p2p_ie, uint *p2p_ielen)
  function u8 (line 1982) | u8 *rtw_get_p2p_attr(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id ,u8 *...
  function u8 (line 2040) | u8 *rtw_get_p2p_attr_content(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_...
  function u32 (line 2064) | u32 rtw_set_p2p_attr_content(u8 *pbuf, u8 attr_id, u16 attr_len, u8 *pda...
  function uint (line 2081) | static uint rtw_p2p_attr_remove(u8 *ie, uint ielen_ori, u8 attr_id)
  function rtw_WLAN_BSSID_EX_remove_p2p_attr (line 2123) | void rtw_WLAN_BSSID_EX_remove_p2p_attr(WLAN_BSSID_EX *bss_ex, u8 attr_id)
  function dump_wfd_ie (line 2159) | void dump_wfd_ie(void *sel, u8 *ie, u32 ie_len)
  function rtw_get_wfd_ie (line 2182) | int rtw_get_wfd_ie(u8 *in_ie, int in_len, u8 *wfd_ie, uint *wfd_ielen)
  function rtw_get_wfd_ie_from_scan_queue (line 2241) | int rtw_get_wfd_ie_from_scan_queue(u8 *in_ie, int in_len, u8 *wfd_ie, ui...
  function rtw_get_wfd_attr_content (line 2267) | int rtw_get_wfd_attr_content(u8 *wfd_ie, uint wfd_ielen, u8 target_attr_...
  function ieee80211_is_empty_essid (line 2316) | int ieee80211_is_empty_essid(const char *essid, int essid_len)
  function ieee80211_get_hdrlen (line 2332) | int ieee80211_get_hdrlen(u16 fc)
  function rtw_get_cipher_info (line 2359) | int rtw_get_cipher_info(struct wlan_network *pnetwork)
  function rtw_get_bcn_info (line 2400) | void rtw_get_bcn_info(struct wlan_network *pnetwork)
  function u8 (line 2458) | u8	rtw_ht_mcsset_to_nss(u8 *supp_mcs_set)
  function u16 (line 2477) | u16 rtw_mcs_rate(u8 rf_type, u8 bw_40MHz, u8 short_GI, unsigned char * M...
  function rtw_action_frame_parse (line 2538) | int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8* category,...

FILE: core/rtw_io.c
  function u8 (line 72) | u8 _rtw_read8(_adapter *adapter, u32 addr)
  function u16 (line 87) | u16 _rtw_read16(_adapter *adapter, u32 addr)
  function u32 (line 102) | u32 _rtw_read32(_adapter *adapter, u32 addr)
  function _rtw_write8 (line 118) | int _rtw_write8(_adapter *adapter, u32 addr, u8 val)
  function _rtw_write16 (line 133) | int _rtw_write16(_adapter *adapter, u32 addr, u16 val)
  function _rtw_write32 (line 149) | int _rtw_write32(_adapter *adapter, u32 addr, u32 val)
  function _rtw_writeN (line 166) | int _rtw_writeN(_adapter *adapter, u32 addr ,u32 length , u8 *pdata)
  function u8 (line 183) | u8 _rtw_sd_f0_read8(_adapter *adapter, u32 addr)
  function u8 (line 203) | u8 _rtw_sd_iread8(_adapter *adapter, u32 addr)
  function u16 (line 220) | u16 _rtw_sd_iread16(_adapter *adapter, u32 addr)
  function u32 (line 237) | u32 _rtw_sd_iread32(_adapter *adapter, u32 addr)
  function _rtw_sd_iwrite8 (line 254) | int _rtw_sd_iwrite8(_adapter *adapter, u32 addr, u8 val)
  function _rtw_sd_iwrite16 (line 271) | int _rtw_sd_iwrite16(_adapter *adapter, u32 addr, u16 val)
  function _rtw_sd_iwrite32 (line 287) | int _rtw_sd_iwrite32(_adapter *adapter, u32 addr, u32 val)
  function _rtw_write8_async (line 308) | int _rtw_write8_async(_adapter *adapter, u32 addr, u8 val)
  function _rtw_write16_async (line 323) | int _rtw_write16_async(_adapter *adapter, u32 addr, u16 val)
  function _rtw_write32_async (line 338) | int _rtw_write32_async(_adapter *adapter, u32 addr, u32 val)
  function _rtw_read_mem (line 354) | void _rtw_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
  function _rtw_write_mem (line 378) | void _rtw_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
  function _rtw_read_port (line 395) | void _rtw_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
  function _rtw_read_port_cancel (line 419) | void _rtw_read_port_cancel(_adapter *adapter)
  function u32 (line 433) | u32 _rtw_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem)
  function u32 (line 452) | u32 _rtw_write_port_and_wait(_adapter *adapter, u32 addr, u32 cnt, u8 *p...
  function _rtw_write_port_cancel (line 469) | void _rtw_write_port_cancel(_adapter *adapter)
  function rtw_init_io_priv (line 482) | int rtw_init_io_priv(_adapter *padapter, void (*set_intf_ops)(_adapter *...
  function rtw_inc_and_chk_continual_io_error (line 504) | int rtw_inc_and_chk_continual_io_error(struct dvobj_priv *dvobj)
  function rtw_reset_continual_io_error (line 520) | void rtw_reset_continual_io_error(struct dvobj_priv *dvobj)
  function match_read_sniff_ranges (line 539) | bool match_read_sniff_ranges(u32 addr, u16 len)
  function match_write_sniff_ranges (line 550) | bool match_write_sniff_ranges(u32 addr, u16 len)
  type rf_sniff_ent (line 561) | struct rf_sniff_ent {
  type rf_sniff_ent (line 567) | struct rf_sniff_ent
  type rf_sniff_ent (line 572) | struct rf_sniff_ent
  type rf_sniff_ent (line 577) | struct rf_sniff_ent
  type rf_sniff_ent (line 578) | struct rf_sniff_ent
  function match_rf_read_sniff_ranges (line 580) | bool match_rf_read_sniff_ranges(u8 path, u32 addr, u32 mask)
  function match_rf_write_sniff_ranges (line 593) | bool match_rf_write_sniff_ranges(u8 path, u32 addr, u32 mask)
  function u8 (line 606) | u8 dbg_rtw_read8(_adapter *adapter, u32 addr, const char *caller, const ...
  function u16 (line 616) | u16 dbg_rtw_read16(_adapter *adapter, u32 addr, const char *caller, cons...
  function u32 (line 626) | u32 dbg_rtw_read32(_adapter *adapter, u32 addr, const char *caller, cons...
  function dbg_rtw_write8 (line 636) | int dbg_rtw_write8(_adapter *adapter, u32 addr, u8 val, const char *call...
  function dbg_rtw_write16 (line 643) | int dbg_rtw_write16(_adapter *adapter, u32 addr, u16 val, const char *ca...
  function dbg_rtw_write32 (line 650) | int dbg_rtw_write32(_adapter *adapter, u32 addr, u32 val, const char *ca...
  function dbg_rtw_writeN (line 657) | int dbg_rtw_writeN(_adapter *adapter, u32 addr ,u32 length , u8 *data, c...
  function u8 (line 666) | u8 dbg_rtw_sd_f0_read8(_adapter *adapter, u32 addr, const char *caller, ...
  function u8 (line 679) | u8 dbg_rtw_sd_iread8(_adapter *adapter, u32 addr, const char *caller, co...
  function u16 (line 689) | u16 dbg_rtw_sd_iread16(_adapter *adapter, u32 addr, const char *caller, ...
  function u32 (line 699) | u32 dbg_rtw_sd_iread32(_adapter *adapter, u32 addr, const char *caller, ...
  function dbg_rtw_sd_iwrite8 (line 709) | int dbg_rtw_sd_iwrite8(_adapter *adapter, u32 addr, u8 val, const char *...
  function dbg_rtw_sd_iwrite16 (line 716) | int dbg_rtw_sd_iwrite16(_adapter *adapter, u32 addr, u16 val, const char...
  function dbg_rtw_sd_iwrite32 (line 723) | int dbg_rtw_sd_iwrite32(_adapter *adapter, u32 addr, u32 val, const char...

FILE: core/rtw_ioctl_query.c
  function u8 (line 29) | u8
  function u8 (line 80) | u8 query_802_11_association_information(	_adapter *padapter,PNDIS_802_11...

FILE: core/rtw_ioctl_rtl.c
  type oid_obj_priv (line 28) | struct oid_obj_priv
  type oid_obj_priv (line 113) | struct oid_obj_priv
  type oid_obj_priv (line 124) | struct oid_obj_priv
  type oid_obj_priv (line 140) | struct oid_obj_priv
  function NDIS_STATUS (line 154) | NDIS_STATUS oid_rt_pro_set_fw_dig_state_hdl(struct oid_par_priv* poid_pa...
  function NDIS_STATUS (line 188) | NDIS_STATUS oid_rt_pro_set_fw_ra_state_hdl(struct oid_par_priv* poid_par...
  function NDIS_STATUS (line 224) | NDIS_STATUS oid_rt_get_signal_quality_hdl(struct oid_par_priv* poid_par_...
  function NDIS_STATUS (line 254) | NDIS_STATUS oid_rt_get_small_packet_crc_hdl(struct oid_par_priv* poid_pa...
  function NDIS_STATUS (line 278) | NDIS_STATUS oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv* poid_p...
  function NDIS_STATUS (line 303) | NDIS_STATUS oid_rt_get_large_packet_crc_hdl(struct oid_par_priv* poid_pa...
  function NDIS_STATUS (line 329) | NDIS_STATUS oid_rt_get_tx_retry_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 342) | NDIS_STATUS oid_rt_get_rx_retry_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 356) | NDIS_STATUS oid_rt_get_rx_total_packet_hdl(struct oid_par_priv* poid_par...
  function NDIS_STATUS (line 380) | NDIS_STATUS oid_rt_get_tx_beacon_ok_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 393) | NDIS_STATUS oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv* poid_par_p...
  function NDIS_STATUS (line 407) | NDIS_STATUS oid_rt_get_rx_icv_err_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 432) | NDIS_STATUS oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv* poi...
  function NDIS_STATUS (line 446) | NDIS_STATUS oid_rt_get_preamble_mode_hdl(struct oid_par_priv* poid_par_p...
  function NDIS_STATUS (line 477) | NDIS_STATUS oid_rt_get_ap_ip_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 491) | NDIS_STATUS oid_rt_get_channelplan_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 506) | NDIS_STATUS oid_rt_set_channelplan_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 522) | NDIS_STATUS oid_rt_set_preamble_mode_hdl(struct oid_par_priv* poid_par_p...
  function NDIS_STATUS (line 554) | NDIS_STATUS oid_rt_set_bcn_intvl_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 567) | NDIS_STATUS oid_rt_dedicate_probe_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 575) | NDIS_STATUS oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv* poid_par_...
  function NDIS_STATUS (line 599) | NDIS_STATUS oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv* poid_par_...
  function NDIS_STATUS (line 622) | NDIS_STATUS oid_rt_current_tx_power_level_hdl(struct oid_par_priv* poid_...
  function NDIS_STATUS (line 629) | NDIS_STATUS oid_rt_get_enc_key_mismatch_count_hdl(struct oid_par_priv* p...
  function NDIS_STATUS (line 642) | NDIS_STATUS oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv* poid...
  function NDIS_STATUS (line 655) | NDIS_STATUS oid_rt_get_channel_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 688) | NDIS_STATUS oid_rt_get_hardware_radio_off_hdl(struct oid_par_priv* poid_...
  function NDIS_STATUS (line 701) | NDIS_STATUS oid_rt_get_key_mismatch_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 714) | NDIS_STATUS oid_rt_supported_wireless_mode_hdl(struct oid_par_priv* poid...
  function NDIS_STATUS (line 740) | NDIS_STATUS oid_rt_get_channel_list_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 753) | NDIS_STATUS oid_rt_get_scan_in_progress_hdl(struct oid_par_priv* poid_pa...
  function NDIS_STATUS (line 768) | NDIS_STATUS oid_rt_forced_data_rate_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 775) | NDIS_STATUS oid_rt_wireless_mode_for_scan_list_hdl(struct oid_par_priv* ...
  function NDIS_STATUS (line 782) | NDIS_STATUS oid_rt_get_bss_wireless_mode_hdl(struct oid_par_priv* poid_p...
  function NDIS_STATUS (line 796) | NDIS_STATUS oid_rt_scan_with_magic_packet_hdl(struct oid_par_priv* poid_...
  function NDIS_STATUS (line 806) | NDIS_STATUS oid_rt_ap_get_associated_station_list_hdl(struct oid_par_pri...
  function NDIS_STATUS (line 819) | NDIS_STATUS oid_rt_ap_switch_into_ap_mode_hdl(struct oid_par_priv* poid_...
  function NDIS_STATUS (line 826) | NDIS_STATUS oid_rt_ap_supported_hdl(struct oid_par_priv* poid_par_priv)
  function NDIS_STATUS (line 833) | NDIS_STATUS oid_rt_ap_set_passphrase_hdl(struct oid_par_priv* poid_par_p...
  function NDIS_STATUS (line 850) | NDIS_STATUS oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* poid_p...
  function NDIS_STATUS (line 890) | NDIS_STATUS oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv* poid_pa...
  type _CONNECT_STATE_ (line 950) | enum _CONNECT_STATE_{
  function NDIS_STATUS (line 957) | NDIS_STATUS oid_rt_get_connect_state_hdl(struct oid_par_priv* poid_par_p...
  function NDIS_STATUS (line 1007) | NDIS_STATUS oid_rt_set_default_key_id_hdl(struct oid_par_priv* poid_par_...

FILE: core/rtw_ioctl_set.c
  function u8 (line 35) | u8 rtw_validate_bssid(u8 *bssid)
  function u8 (line 49) | u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid)
  function u8 (line 82) | u8 rtw_do_join(_adapter * padapter)
  function u8 (line 225) | u8 rtw_pnp_set_power_wakeup(_adapter* padapter)
  function u8 (line 242) | u8 rtw_pnp_set_power_sleep(_adapter* padapter)
  function u8 (line 260) | u8 rtw_set_802_11_reload_defaults(_adapter * padapter, NDIS_802_11_RELOA...
  function u8 (line 283) | u8 set_802_11_test(_adapter* padapter, NDIS_802_11_TEST *test)
  function u8 (line 311) | u8	rtw_set_802_11_pmkid(_adapter*	padapter, NDIS_802_11_PMKID *pmkid)
  function u8 (line 320) | u8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid)
  function u8 (line 404) | u8 rtw_set_802_11_ssid(_adapter* padapter, NDIS_802_11_SSID *ssid)
  function u8 (line 528) | u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSI...
  function u8 (line 605) | u8 rtw_set_802_11_infrastructure_mode(_adapter* padapter,
  function u8 (line 696) | u8 rtw_set_802_11_disassociate(_adapter *padapter)
  function u8 (line 724) | u8 rtw_set_802_11_bssid_list_scan(_adapter* padapter, NDIS_802_11_SSID *...
  function u8 (line 776) | u8 rtw_set_802_11_authentication_mode(_adapter* padapter, NDIS_802_11_AU...
  function u8 (line 810) | u8 rtw_set_802_11_add_wep(_adapter* padapter, NDIS_802_11_WEP *wep){
  function u8 (line 874) | u8 rtw_set_802_11_remove_wep(_adapter* padapter, u32 keyindex){
  function u8 (line 917) | u8 rtw_set_802_11_add_key(_adapter* padapter, NDIS_802_11_KEY *key){
  function u8 (line 1288) | u8 rtw_set_802_11_remove_key(_adapter*	padapter, NDIS_802_11_REMOVE_KEY ...
  function u16 (line 1347) | u16 rtw_get_cur_max_rate(_adapter *adapter)
  function rtw_set_scan_mode (line 1417) | int rtw_set_scan_mode(_adapter *adapter, RT_SCAN_TYPE scan_mode)
  function rtw_set_channel_plan (line 1434) | int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan)
  function rtw_set_country (line 1450) | int rtw_set_country(_adapter *adapter, const char *country_code)
  function rtw_set_band (line 1472) | int rtw_set_band(_adapter *adapter, u8 band)

FILE: core/rtw_iol.c
  type xmit_frame (line 24) | struct xmit_frame
  type xmit_frame (line 26) | struct xmit_frame
  type xmit_buf (line 27) | struct xmit_buf
  type pkt_attrib (line 28) | struct pkt_attrib
  type xmit_priv (line 29) | struct xmit_priv
  function rtw_IOL_append_cmds (line 75) | int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32...
  function rtw_IOL_applied (line 100) | bool rtw_IOL_applied(ADAPTER *adapter)
  function rtw_IOL_exec_cmds_sync (line 113) | int rtw_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_fra...
  function rtw_IOL_append_LLT_cmd (line 119) | int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary)
  function _rtw_IOL_append_WB_cmd (line 123) | int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 v...
  function _rtw_IOL_append_WW_cmd (line 144) | int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 ...
  function _rtw_IOL_append_WD_cmd (line 165) | int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 ...
  function _rtw_IOL_append_WRF_cmd (line 187) | int _rtw_IOL_append_WRF_cmd(struct xmit_frame *xmit_frame, u8 rf_path, u...
  function rtw_IOL_append_DELAY_US_cmd (line 211) | int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us)
  function rtw_IOL_append_DELAY_MS_cmd (line 221) | int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms)
  function rtw_IOL_append_END_cmd (line 231) | int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame)
  function u8 (line 238) | u8 rtw_IOL_cmd_boundary_handle(struct xmit_frame *pxmit_frame)
  function rtw_IOL_cmd_buf_dump (line 252) | void rtw_IOL_cmd_buf_dump(ADAPTER *Adapter,int buf_len,u8 *pbuf)
  function rtw_IOL_append_LLT_cmd (line 269) | int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary)
  function _rtw_IOL_append_WB_cmd (line 278) | int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 v...
  function _rtw_IOL_append_WW_cmd (line 288) | int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 ...
  function _rtw_IOL_append_WD_cmd (line 298) | int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 ...
  function dbg_rtw_IOL_append_WB_cmd (line 310) | int dbg_rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u...
  function dbg_rtw_IOL_append_WW_cmd (line 318) | int dbg_rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u...
  function dbg_rtw_IOL_append_WD_cmd (line 326) | int dbg_rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u...
  function rtw_IOL_append_DELAY_US_cmd (line 335) | int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us)
  function rtw_IOL_append_DELAY_MS_cmd (line 346) | int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms)
  function rtw_IOL_append_END_cmd (line 357) | int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame)
  function rtw_IOL_exec_cmd_array_sync (line 366) | int rtw_IOL_exec_cmd_array_sync(PADAPTER adapter, u8 *IOL_cmds, u32 cmd_...
  function rtw_IOL_exec_empty_cmds_sync (line 379) | int rtw_IOL_exec_empty_cmds_sync(ADAPTER *adapter, u32 max_wating_ms)

FILE: core/rtw_mem.c
  type sk_buff_head (line 10) | struct sk_buff_head
  type u8 (line 11) | struct u8
  type u8 (line 13) | struct u8
  function u16 (line 19) | u16 rtw_rtkm_get_buff_size(void)
  function u8 (line 25) | u8 rtw_rtkm_get_nr_recv_skb(void)
  type sk_buff (line 31) | struct sk_buff
  type sk_buff (line 33) | struct sk_buff
  function rtw_free_skb_premem (line 49) | int rtw_free_skb_premem(struct sk_buff *pskb)
  function rtw_mem_init (line 65) | static int __init rtw_mem_init(void)
  function rtw_mem_exit (line 110) | static void __exit rtw_mem_exit(void)

FILE: core/rtw_mlme.c
  function sint (line 28) | sint	_rtw_init_mlme_priv (_adapter* padapter)
  type mlme_priv (line 112) | struct mlme_priv
  function rtw_mfree_mlme_priv_lock (line 113) | void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv)
  function rtw_free_mlme_ie_data (line 120) | static void rtw_free_mlme_ie_data(u8 **ppie, u32 *plen)
  function rtw_free_mlme_priv_ie_data (line 130) | void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
  function _rtw_free_mlme_priv (line 157) | void _rtw_free_mlme_priv (struct mlme_priv *pmlmepriv)
  function sint (line 177) | sint	_rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork)
  type wlan_network (line 229) | struct	wlan_network
  type mlme_priv (line 229) | struct	mlme_priv
  type wlan_network (line 232) | struct	wlan_network
  function _rtw_free_network (line 267) | void _rtw_free_network(struct	mlme_priv *pmlmepriv ,struct wlan_network ...
  function _rtw_free_network_nolock (line 312) | void _rtw_free_network_nolock(struct	mlme_priv *pmlmepriv, struct wlan_n...
  type wlan_network (line 347) | struct wlan_network
  type wlan_network (line 352) | struct	wlan_network
  function _rtw_free_network_queue (line 391) | void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall)
  function sint (line 427) | sint rtw_if_up(_adapter *padapter)	{
  function rtw_generate_random_ibss (line 447) | void rtw_generate_random_ibss(u8* pibss)
  function u8 (line 462) | u8 *rtw_get_capability_from_ie(u8 *ie)
  function u16 (line 468) | u16 rtw_get_capability(WLAN_BSSID_EX *bss)
  function u8 (line 479) | u8 *rtw_get_timestampe_from_ie(u8 *ie)
  function u8 (line 484) | u8 *rtw_get_beacon_interval_from_ie(u8 *ie)
  function rtw_init_mlme_priv (line 490) | int	rtw_init_mlme_priv (_adapter *padapter)//(struct	mlme_priv *pmlmepriv)
  function rtw_free_mlme_priv (line 499) | void rtw_free_mlme_priv (struct mlme_priv *pmlmepriv)
  type wlan_network (line 507) | struct wlan_network
  function rtw_enqueue_network (line 508) | int	rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork)
  type wlan_network (line 528) | struct	wlan_network
  type mlme_priv (line 528) | struct	mlme_priv
  type wlan_network (line 529) | struct	wlan_network
  type mlme_priv (line 529) | struct	mlme_priv
  type wlan_network (line 531) | struct	wlan_network
  type mlme_priv (line 538) | struct mlme_priv
  type wlan_network (line 538) | struct	wlan_network
  function rtw_free_network (line 539) | void rtw_free_network(struct mlme_priv *pmlmepriv, struct	wlan_network *...
  type wlan_network (line 547) | struct wlan_network
  function rtw_free_network_nolock (line 548) | void rtw_free_network_nolock(_adapter * padapter, struct wlan_network *p...
  function rtw_free_network_queue (line 560) | void rtw_free_network_queue(_adapter* dev, u8 isfreeall)
  type wlan_network (line 572) | struct	wlan_network
  type wlan_network (line 574) | struct	wlan_network
  function rtw_is_same_ibss (line 579) | int rtw_is_same_ibss(_adapter *adapter, struct wlan_network *pnetwork)
  function is_same_ess (line 603) | inline int is_same_ess(WLAN_BSSID_EX *a, WLAN_BSSID_EX *b)
  function is_same_network (line 611) | int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst, u8 feature)
  type wlan_network (line 648) | struct wlan_network
  type wlan_network (line 648) | struct wlan_network
  type wlan_network (line 651) | struct wlan_network
  type wlan_network (line 671) | struct wlan_network
  type wlan_network (line 671) | struct wlan_network
  type wlan_network (line 674) | struct wlan_network
  type wlan_network (line 687) | struct	wlan_network
  type wlan_network (line 692) | struct	wlan_network
  type wlan_network (line 693) | struct	wlan_network
  function update_network (line 720) | void update_network(WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src,
  function update_current_network (line 833) | static void update_current_network(_adapter *adapter, WLAN_BSSID_EX *pne...
  function rtw_update_scanned_network (line 867) | void rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target)
  function rtw_add_network (line 1021) | void rtw_add_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork)
  type wlan_network (line 1051) | struct wlan_network
  function rtw_is_desired_network (line 1052) | int rtw_is_desired_network(_adapter *adapter, struct wlan_network *pnetw...
  function rtw_atimdone_event_callback (line 1113) | void rtw_atimdone_event_callback(_adapter	*adapter , u8 *pbuf)
  function rtw_survey_event_callback (line 1123) | void rtw_survey_event_callback(_adapter	*adapter, u8 *pbuf)
  function rtw_surveydone_event_callback (line 1206) | void rtw_surveydone_event_callback(_adapter	*adapter, u8 *pbuf)
  function rtw_dummy_event_callback (line 1401) | void rtw_dummy_event_callback(_adapter *adapter , u8 *pbuf)
  function rtw_fwdbg_event_callback (line 1406) | void rtw_fwdbg_event_callback(_adapter *adapter , u8 *pbuf)
  function free_scanqueue (line 1411) | static void free_scanqueue(struct	mlme_priv *pmlmepriv)
  function rtw_reset_rx_info (line 1442) | void rtw_reset_rx_info(struct debug_priv *pdbgpriv){
  function rtw_free_assoc_resources (line 1453) | void rtw_free_assoc_resources(_adapter *adapter, int lock_scanned_queue)
  function rtw_indicate_connect (line 1554) | void rtw_indicate_connect(_adapter *padapter)
  function rtw_indicate_disconnect (line 1612) | void rtw_indicate_disconnect( _adapter *padapter )
  function rtw_indicate_scan_done (line 1694) | inline void rtw_indicate_scan_done( _adapter *padapter, bool aborted)
  function u32 (line 1718) | static u32 _rtw_wait_scan_done(_adapter *adapter, u8 abort, u32 timeout_ms)
  function rtw_scan_wait_completed (line 1759) | void rtw_scan_wait_completed(_adapter *adapter)
  function u32 (line 1774) | u32 rtw_scan_abort_timeout(_adapter *adapter, u32 timeout_ms)
  function rtw_scan_abort_no_wait (line 1779) | void rtw_scan_abort_no_wait(_adapter *adapter)
  function rtw_scan_abort (line 1788) | void rtw_scan_abort(_adapter *adapter)
  type sta_info (line 1793) | struct sta_info
  type wlan_network (line 1793) | struct wlan_network
  type sta_info (line 1796) | struct sta_info
  type recv_reorder_ctrl (line 1797) | struct recv_reorder_ctrl
  type sta_priv (line 1798) | struct sta_priv
  type mlme_ext_priv (line 1799) | struct mlme_ext_priv
  function rtw_joinbss_update_network (line 1916) | static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_n...
  function rtw_joinbss_event_prehandle (line 1992) | void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf)
  function rtw_joinbss_event_callback (line 2208) | void rtw_joinbss_event_callback(_adapter *adapter, u8 *pbuf)
  function u8 (line 2227) | u8 search_max_mac_id(_adapter *padapter)
  function rtw_sta_media_status_rpt (line 2287) | void rtw_sta_media_status_rpt(_adapter *adapter,struct sta_info *psta, u...
  function rtw_stassoc_event_callback (line 2303) | void rtw_stassoc_event_callback(_adapter *adapter, u8 *pbuf)
  function rtw_sta_timeout_event_callback (line 2437) | void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf)
  function rtw_stadel_event_callback (line 2468) | void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf)
  function rtw_cpwm_event_callback (line 2627) | void rtw_cpwm_event_callback(PADAPTER padapter, u8 *pbuf)
  function rtw_wmm_event_callback (line 2647) | void rtw_wmm_event_callback(PADAPTER padapter, u8 *pbuf)
  function _rtw_join_timeout_handler (line 2661) | void _rtw_join_timeout_handler (_adapter *adapter)
  function rtw_scan_timeout_handler (line 2740) | void rtw_scan_timeout_handler (_adapter *adapter)
  function rtw_mlme_reset_auto_scan_int (line 2780) | void rtw_mlme_reset_auto_scan_int(_adapter *adapter)
  function rtw_drv_scan_by_self (line 2810) | void rtw_drv_scan_by_self(_adapter *padapter)
  function rtw_auto_scan_handler (line 2844) | static void rtw_auto_scan_handler(_adapter *padapter)
  type mlme_priv (line 2859) | struct mlme_priv
  type registry_priv (line 2861) | struct registry_priv
  function rtw_is_scan_deny (line 2979) | inline bool rtw_is_scan_deny(_adapter *adapter)
  function rtw_clear_scan_deny (line 2985) | inline void rtw_clear_scan_deny(_adapter *adapter)
  function rtw_set_scan_deny_timer_hdl (line 2993) | void rtw_set_scan_deny_timer_hdl(_adapter *adapter)
  function rtw_set_scan_deny (line 2998) | void rtw_set_scan_deny(_adapter *adapter, u32 ms)
  function rtw_check_roaming_candidate (line 3030) | static int rtw_check_roaming_candidate(struct mlme_priv *mlme
  function rtw_select_roaming_candidate (line 3079) | int rtw_select_roaming_candidate(struct mlme_priv *mlme)
  function rtw_check_join_candidate (line 3153) | static int rtw_check_join_candidate(struct mlme_priv *mlme
  function rtw_select_and_join_from_scanned_queue (line 3220) | int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv )
  function sint (line 3333) | sint rtw_set_auth(_adapter * adapter,struct security_priv *psecuritypriv)
  function sint (line 3380) | sint rtw_set_key(_adapter * adapter,struct security_priv *psecuritypriv,...
  function rtw_restruct_wmm_ie (line 3475) | int rtw_restruct_wmm_ie(_adapter *adapter, u8 *in_ie, u8 *out_ie, uint i...
  function SecIsInPMKIDList (line 3529) | static int SecIsInPMKIDList(_adapter *Adapter, u8 *bssid)
  function rtw_append_pmkid (line 3570) | static int rtw_append_pmkid(_adapter *adapter,int iEntry, u8 *ie, uint i...
  function rtw_remove_pmkid (line 3612) | static int rtw_remove_pmkid(_adapter *adapter, u8 *ie, uint ie_len)
  function sint (line 3634) | sint rtw_restruct_sec_ie(_adapter *adapter,u8 *in_ie, u8 *out_ie, uint i...
  function rtw_init_registrypriv_dev_network (line 3704) | void rtw_init_registrypriv_dev_network(	_adapter* adapter)
  function rtw_update_registrypriv_dev_network (line 3728) | void rtw_update_registrypriv_dev_network(_adapter* adapter)
  function rtw_get_encrypt_decrypt_from_registrypriv (line 3812) | void rtw_get_encrypt_decrypt_from_registrypriv(_adapter* adapter)
  function rtw_joinbss_reset (line 3822) | void rtw_joinbss_reset(_adapter *padapter)
  function rtw_ht_use_default_setting (line 3861) | void	rtw_ht_use_default_setting(_adapter *padapter)
  function rtw_build_wmm_ie_ht (line 3926) | void rtw_build_wmm_ie_ht(_adapter *padapter, u8 *out_ie, uint *pout_len)
  function rtw_restructure_ht_ie (line 3943) | unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *ou...
  function rtw_update_ht_cap (line 4166) | void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 chan...
  function rtw_issue_addbareq_cmd_tdls (line 4368) | void rtw_issue_addbareq_cmd_tdls(_adapter *padapter, struct xmit_frame *...
  function rtw_issue_addbareq_cmd (line 4398) | void rtw_issue_addbareq_cmd(_adapter *padapter, struct xmit_frame *pxmit...
  function rtw_append_exented_cap (line 4454) | void rtw_append_exented_cap(_adapter *padapter, u8 *out_ie, uint *pout_len)
  function rtw_set_to_roam (line 4485) | inline void rtw_set_to_roam(_adapter *adapter, u8 to_roam)
  function u8 (line 4492) | inline u8 rtw_dec_to_roam(_adapter *adapter)
  function u8 (line 4498) | inline u8 rtw_to_roam(_adapter *adapter)
  function rtw_roaming (line 4503) | void rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network)
  function _rtw_roaming (line 4512) | void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network)
  function rtw_adjust_chbw (line 4551) | bool rtw_adjust_chbw(_adapter *adapter, u8 req_ch, u8 *req_bw, u8 *req_o...
  function sint (line 4576) | sint rtw_linked_check(_adapter *padapter)
  function sint (line 4593) | sint rtw_buddy_adapter_up(_adapter *padapter)
  function sint (line 4613) | sint check_buddy_fwstate(_adapter *padapter, sint state)
  function u8 (line 4631) | u8 rtw_get_buddy_bBusyTraffic(_adapter *padapter)

FILE: core/rtw_mlme_ext.c
  type mlme_handler (line 29) | struct mlme_handler
  type mlme_handler (line 52) | struct mlme_handler
  type action_handler (line 75) | struct action_handler
  function rtw_chplan_is_empty (line 301) | bool rtw_chplan_is_empty(u8 id)
  function rtw_rfctl_reset_cac (line 323) | void rtw_rfctl_reset_cac(struct rf_ctl_t *rfctl)
  function rtw_is_cac_reset_needed (line 335) | bool rtw_is_cac_reset_needed(_adapter *adapter)
  function _rtw_rfctl_overlap_radar_detect_ch (line 406) | bool _rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl, u8 ch, u...
  function rtw_rfctl_overlap_radar_detect_ch (line 435) | bool rtw_rfctl_overlap_radar_detect_ch(struct rf_ctl_t *rfctl)
  function rtw_rfctl_is_tx_blocked_by_cac (line 443) | bool rtw_rfctl_is_tx_blocked_by_cac(struct rf_ctl_t *rfctl)
  function rtw_chset_is_ch_non_ocp (line 448) | bool rtw_chset_is_ch_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 bw, u8 o...
  function _rtw_chset_update_non_ocp (line 486) | static void _rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8...
  function rtw_chset_update_non_ocp (line 514) | inline void rtw_chset_update_non_ocp(RT_CHANNEL_INFO *ch_set, u8 ch, u8 ...
  function rtw_chset_update_non_ocp_ms (line 519) | inline void rtw_chset_update_non_ocp_ms(RT_CHANNEL_INFO *ch_set, u8 ch, ...
  function rtw_choose_available_chbw (line 525) | bool rtw_choose_available_chbw(_adapter *adapter, u8 req_bw, u8 *dec_ch,...
  function dump_chplan_id_list (line 571) | void dump_chplan_id_list(void *sel)
  function dump_chplan_test (line 585) | void dump_chplan_test(void *sel)
  function dump_chset (line 605) | void dump_chset(void *sel, RT_CHANNEL_INFO *ch_set)
  function dump_cur_chset (line 633) | void dump_cur_chset(void *sel, _adapter *adapter)
  function rtw_ch_set_search_ch (line 651) | int rtw_ch_set_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch)
  function rtw_mlme_band_check (line 671) | bool rtw_mlme_band_check(_adapter *adapter, const u32 ch)
  function init_hw_mlme_ext (line 688) | int init_hw_mlme_ext(_adapter *padapter)
  function init_mlme_default_rate_set (line 699) | void init_mlme_default_rate_set(_adapter* padapter)
  function init_mlme_ext_priv_value (line 713) | static void init_mlme_ext_priv_value(_adapter* padapter)
  function has_channel (line 781) | static int has_channel(RT_CHANNEL_INFO *channel_set,
  function init_channel_list (line 795) | static void init_channel_list(_adapter *padapter, RT_CHANNEL_INFO *chann...
  function u8 (line 852) | static u8 init_channel_set(_adapter* padapter, u8 ChannelPlan, RT_CHANNE...
  function init_mlme_ext_priv (line 958) | int	init_mlme_ext_priv(_adapter* padapter)
  function free_mlme_ext_priv (line 1002) | void free_mlme_ext_priv (struct mlme_ext_priv *pmlmeext)
  function u8 (line 1016) | static u8 cmp_pkt_chnl_diff(_adapter *padapter,u8* pframe,uint packet_len)
  function _mgt_dispatcher (line 1040) | static void _mgt_dispatcher(_adapter *padapter, struct mlme_handler *pta...
  function mgt_dispatcher (line 1059) | void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)
  function u32 (line 1197) | u32 p2p_listen_state_process(_adapter *padapter, unsigned char *da)
  type mlme_priv (line 1253) | struct mlme_priv
  type mlme_ext_priv (line 1254) | struct mlme_ext_priv
  type mlme_ext_info (line 1255) | struct mlme_ext_info
  type sta_info (line 1265) | struct sta_info
  type sta_priv (line 1266) | struct sta_priv
  type wifidirect_info (line 1271) | struct wifidirect_info
  type rx_pkt_attrib (line 1272) | struct rx_pkt_attrib
  type sta_info (line 1373) | struct sta_info
  type sta_priv (line 1375) | struct sta_priv
  type stainfo_stats (line 1464) | struct stainfo_stats
  function OnProbeRsp (line 1529) | unsigned int OnProbeRsp(_adapter *padapter, union recv_frame *precv_frame)
  function OnBeacon (line 1620) | unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame)
  type sta_info (line 1841) | struct sta_info
  type sta_info (line 1842) | struct	sta_info
  type sta_priv (line 1843) | struct	sta_priv
  type security_priv (line 1844) | struct security_priv
  type mlme_ext_priv (line 1845) | struct mlme_ext_priv
  type mlme_ext_info (line 1846) | struct mlme_ext_info
  type rx_pkt_attrib (line 1873) | struct rx_pkt_attrib
  function OnAuthClient (line 2128) | unsigned int OnAuthClient(_adapter *padapter, union recv_frame *precv_fr...
  type rtw_ieee802_11_elems (line 2234) | struct rtw_ieee802_11_elems
  type sta_info (line 2235) | struct sta_info
  type mlme_priv (line 2243) | struct mlme_priv
  type security_priv (line 2244) | struct security_priv
  type mlme_ext_priv (line 2245) | struct mlme_ext_priv
  type mlme_ext_info (line 2246) | struct mlme_ext_info
  type sta_priv (line 2248) | struct sta_priv
  type wifidirect_info (line 2252) | struct wifidirect_info
  type sta_info (line 2294) | struct sta_info
  type rtw_ieee80211_ht_cap (line 2636) | struct rtw_ieee80211_ht_cap
  type rtw_ieee80211_ht_cap (line 2637) | struct rtw_ieee80211_ht_cap
  type rtw_ieee80211_ht_cap (line 2643) | struct rtw_ieee80211_ht_cap
  type vht_priv (line 2658) | struct vht_priv
  function OnAssocRsp (line 2891) | unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame)
  function OnDeAuth (line 3024) | unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame)
  function OnDisassoc (line 3123) | unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame)
  function OnAtim (line 3199) | unsigned int OnAtim(_adapter *padapter, union recv_frame *precv_frame)
  function on_action_spct_ch_switch (line 3205) | unsigned int on_action_spct_ch_switch(_adapter *padapter, struct sta_inf...
  function on_action_spct (line 3263) | unsigned int on_action_spct(_adapter *padapter, union recv_frame *precv_...
  function OnAction_qos (line 3306) | unsigned int OnAction_qos(_adapter *padapter, union recv_frame *precv_fr...
  function OnAction_dls (line 3311) | unsigned int OnAction_dls(_adapter *padapter, union recv_frame *precv_fr...
  function u8 (line 3322) | u8 rtw_rx_ampdu_size(_adapter *adapter)
  function rtw_rx_ampdu_is_accept (line 3379) | bool rtw_rx_ampdu_is_accept(_adapter *adapter)
  function rtw_rx_ampdu_set_size (line 3419) | bool rtw_rx_ampdu_set_size(_adapter *adapter, u8 size, u8 reason)
  function rtw_rx_ampdu_set_accept (line 3455) | bool rtw_rx_ampdu_set_accept(_adapter *adapter, u8 accept, u8 reason)
  function u8 (line 3497) | u8 rx_ampdu_apply_sta_tid(_adapter *adapter, struct sta_info *sta, u8 ti...
  function u8 (line 3533) | u8 rx_ampdu_apply_sta(_adapter *adapter, struct sta_info *sta, u8 accept...
  function u16 (line 3552) | u16 rtw_rx_ampdu_apply(_adapter *adapter)
  function OnAction_back (line 3603) | unsigned int OnAction_back(_adapter *padapter, union recv_frame *precv_f...
  function get_reg_classes_full_count (line 3730) | static int get_reg_classes_full_count(struct p2p_channels channel_list) {
  function get_channel_cnt_24g_5gl_5gh (line 3741) | static void get_channel_cnt_24g_5gl_5gh(  struct mlme_ext_priv *pmlmeext...
  function issue_p2p_GO_request (line 3768) | void issue_p2p_GO_request(_adapter *padapter, u8* raddr)
  function issue_p2p_GO_response (line 4213) | void issue_p2p_GO_response(_adapter *padapter, u8* raddr, u8* frame_body...
  function issue_p2p_GO_confirm (line 4694) | void issue_p2p_GO_confirm(_adapter *padapter, u8* raddr, u8 result)
  function issue_p2p_invitation_request (line 4961) | void issue_p2p_invitation_request(_adapter *padapter, u8* raddr )
  function issue_p2p_invitation_response (line 5302) | void issue_p2p_invitation_response(_adapter *padapter, u8* raddr, u8 dia...
  function issue_p2p_provision_request (line 5581) | void issue_p2p_provision_request(_adapter *padapter, u8* pssid, u8 ussid...
  function u8 (line 5694) | u8 is_matched_in_profilelist( u8* peermacaddr, struct profile_info* prof...
  type xmit_frame (line 5718) | struct xmit_frame
  type pkt_attrib (line 5719) | struct pkt_attrib
  type rtw_ieee80211_hdr (line 5721) | struct rtw_ieee80211_hdr
  type xmit_priv (line 5724) | struct xmit_priv
  type mlme_ext_priv (line 5725) | struct mlme_ext_priv
  type mlme_ext_info (line 5726) | struct mlme_ext_info
  type mlme_priv (line 5727) | struct mlme_priv
  type wifidirect_info (line 5731) | struct wifidirect_info
  type rtw_ieee80211_hdr (line 5755) | struct rtw_ieee80211_hdr
  type rtw_ieee80211_hdr_3addr (line 5771) | struct rtw_ieee80211_hdr_3addr
  function else (line 6040) | else if (pmlmepriv->wfd_probe_resp_ie != NULL && pmlmepriv->wfd_probe_re...
  type xmit_frame (line 6062) | struct xmit_frame
  type pkt_attrib (line 6063) | struct pkt_attrib
  type rtw_ieee80211_hdr (line 6065) | struct rtw_ieee80211_hdr
  type xmit_priv (line 6069) | struct xmit_priv
  type mlme_ext_priv (line 6070) | struct mlme_ext_priv
  type mlme_ext_info (line 6071) | struct mlme_ext_info
  type wifidirect_info (line 6074) | struct wifidirect_info
  type mlme_priv (line 6081) | struct mlme_priv
  type rtw_ieee80211_hdr (line 6097) | struct rtw_ieee80211_hdr
  type rtw_ieee80211_hdr_3addr (line 6127) | struct rtw_ieee80211_hdr_3addr
  type rtw_ieee80211_hdr_3addr (line 6128) | struct rtw_ieee80211_hdr_3addr
  function else (line 6381) | else if (pmlmepriv->wfd_probe_req_ie != NULL && pmlmepriv->wfd_probe_req...
  function issue_probereq_p2p (line 6406) | inline void issue_probereq_p2p(_adapter *adapter, u8 *da)
  function issue_probereq_p2p_ex (line 6416) | int issue_probereq_p2p_ex(_adapter *adapter, u8 *da, int try_cnt, int wa...
  function s32 (line 6459) | s32 rtw_action_public_decache(union recv_frame *recv_frame, s32 token)
  function on_action_public_p2p (line 6493) | unsigned int on_action_public_p2p(union recv_frame *precv_frame)
  function on_action_public_vendor (line 6939) | unsigned int on_action_public_vendor(union recv_frame *precv_frame)
  function on_action_public_default (line 6953) | unsigned int on_action_public_default(union recv_frame *precv_frame, u8 ...
  function on_action_public (line 6980) | unsigned int on_action_public(_adapter *padapter, union recv_frame *prec...
  function OnAction_ht (line 7019) | unsigned int OnAction_ht(_adapter *padapter, union recv_frame *precv_frame)
  function OnAction_sa_query (line 7060) | unsigned int OnAction_sa_query(_adapter *padapter, union recv_frame *pre...
  function OnAction_wmm (line 7106) | unsigned int OnAction_wmm(_adapter *padapter, union recv_frame *precv_fr...
  function OnAction_vht (line 7111) | unsigned int OnAction_vht(_adapter *padapter, union recv_frame *precv_fr...
  function OnAction_p2p (line 7155) | unsigned int OnAction_p2p(_adapter *padapter, union recv_frame *precv_fr...
  function OnAction (line 7222) | unsigned int OnAction(_adapter *padapter, union recv_frame *precv_frame)
  function DoReserved (line 7247) | unsigned int DoReserved(_adapter *padapter, union recv_frame *precv_frame)
  type xmit_frame (line 7254) | struct xmit_frame
  type xmit_priv (line 7254) | struct xmit_priv
  type xmit_frame (line 7256) | struct xmit_frame
  type xmit_buf (line 7257) | struct xmit_buf
  type xmit_frame (line 7286) | struct xmit_frame
  type xmit_priv (line 7286) | struct xmit_priv
  type xmit_frame (line 7291) | struct xmit_frame
  type xmit_priv (line 7291) | struct xmit_priv
  function update_mgnt_tx_rate (line 7303) | void update_mgnt_tx_rate(_adapter *padapter, u8 rate)
  function update_mgntframe_attrib (line 7311) | void update_mgntframe_attrib(_adapter *padapter, struct pkt_attrib *patt...
  function update_mgntframe_attrib_addr (line 7368) | void update_mgntframe_attrib_addr(_adapter *padapter, struct xmit_frame ...
  function dump_mgntframe (line 7379) | void dump_mgntframe(_adapter *padapter, struct xmit_frame *pmgntframe)
  function s32 (line 7390) | s32 dump_mgntframe_and_wait(_adapter *padapter, struct xmit_frame *pmgnt...
  function s32 (line 7419) | s32 dump_mgntframe_and_wait_ack(_adapter *padapter, struct xmit_frame *p...
  function update_hidden_ssid (line 7461) | int update_hidden_ssid(u8 *ies, u32 ies_len, u8 hidden_ssid_mode)
  function u32 (line 7500) | u32 rtw_build_vendor_ie(_adapter *padapter , unsigned char *pframe , u8 ...
  type xmit_frame (line 7520) | struct xmit_frame
  type pkt_attrib (line 7521) | struct pkt_attrib
  type rtw_ieee80211_hdr (line 7523) | struct rtw_ieee80211_hdr
  type xmit_priv (line 7526) | struct xmit_priv
  type mlme_priv (line 7529) | struct mlme_priv
  type mlme_ext_priv (line 7531) | struct mlme_ext_priv
  type mlme_ext_info (line 7532) | struct mlme_ext_info
  type wifidirect_info (line 7536) | struct wifidirect_info
  type rtw_ieee80211_hdr (line 7567) | struct rtw_ieee80211_hdr
  type rtw_ieee80211_hdr_3addr (line 7581) | struct rtw_ieee80211_hdr_3addr
  type rtw_ieee80211_hdr_3addr (line 7582) | struct rtw_ieee80211_hdr_3addr
  type rtw_ieee80211_hdr_3addr (line 7706) | struct rtw_ieee80211_hdr_3addr
  type rtw_ieee80211_hdr_3addr (line 7707) | struct rtw_ieee80211_hdr_3addr
  type xmit_frame (line 7846) | struct xmit_frame
  type pkt_attrib (line 7847) | struct pkt_attrib
  type rtw_ieee80211_hdr (line 7849) | struct rtw_ieee80211_hdr
  type xmit_priv (line 7852) | struct xmit_priv
  type mlme_priv (line 7856) | struct mlme_priv
  type mlme_ext_priv (line 7858) | struct mlme_ext_priv
  type mlme_ext_info (line 7859) | struct mlme_ext_info
  type wifidirect_info (line 7863) | struct wifidirect_info
  type rtw_ieee80211_hdr (line 7891) | struct rtw_ieee80211_hdr
  type rtw_ieee80211_hdr_3addr (line 7906) | struct rtw_ieee80211_hdr_3addr
  type rtw_ieee80211_hdr_3addr (line 7963) | struct rtw_ieee80211_hdr_3addr
  type sta_info (line 8103) | struct sta_info
  type sta_priv (line 8104) | struct sta_priv
  function _issue_probereq (line 8141) | int _issue_probereq(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *da,...
  function issue_probereq (line 8252) | inline void issue_probereq(_adapter *padapter, NDIS_802_11_SSID *pssid, ...
  function issue_probereq_ex (line 8262) | int issue_probereq_ex(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *d...
  function issue_auth (line 8308) | void issue_auth(_adapter *padapter, struct sta_info *psta, unsigned shor...
  function issue_asocrsp (line 8456) | void issue_asocrsp(_adapter *padapter, unsigned short status, struct sta...
  function issue_assocreq (line 8695) | void issue_assocreq(_adapter *padapter)
  function _issue_nulldata (line 9167) | static int _issue_nulldata(_adapter *padapter, unsigned char *da, unsign...
  function issue_nulldata (line 9259) | int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int p...
  function s32 (line 9327) | s32 issue_nulldata_in_interrupt(PADAPTER padapter, u8 *da, unsigned int ...
  function _issue_qos_nulldata (line 9347) | static int _issue_qos_nulldata(_adapter *padapter, unsigned char *da, u1...
  function issue_qos_nulldata (line 9441) | int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, i...
  function _issue_deauth (line 9491) | static int _issue_deauth(_adapter *padapter, unsigned char *da, unsigned...
  function issue_deauth (line 9568) | int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short r...
  function issue_deauth_11w (line 9575) | int issue_deauth_11w(_adapter *padapter, unsigned char *da, unsigned sho...
  function issue_deauth_ex (line 9587) | int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, i...
  function issue_action_spct_ch_switch (line 9632) | void issue_action_spct_ch_switch(_adapter *padapter, u8 *ra, u8 new_ch, ...
  function issue_action_SA_Query (line 9699) | void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, uns...
  function issue_action_ba (line 9801) | static int issue_action_ba(_adapter *padapter, unsigned char *raddr, uns...
  function issue_addba_req (line 9958) | inline void issue_addba_req(_adapter *adapter, unsigned char *ra, u8 tid)
  function issue_addba_rsp (line 9980) | inline void issue_addba_rsp(_adapter *adapter, unsigned char *ra, u8 tid...
  function issue_del_ba (line 10001) | inline void issue_del_ba(_adapter *adapter, unsigned char *ra, u8 tid, u...
  function issue_del_ba_ex (line 10025) | int issue_del_ba_ex(_adapter *adapter, unsigned char *ra, u8 tid, u16 re...
  function issue_action_BSSCoexistPacket (line 10070) | static void issue_action_BSSCoexistPacket(_adapter *padapter)
  function _issue_action_SM_PS (line 10231) | int _issue_action_SM_PS(_adapter *padapter ,  unsigned char *raddr , u8 ...
  function issue_action_SM_PS_wait_ack (line 10325) | int issue_action_SM_PS_wait_ack(_adapter *padapter, unsigned char *raddr...
  function issue_action_SM_PS (line 10369) | int issue_action_SM_PS(_adapter *padapter ,  unsigned char *raddr , u8 N...
  function _send_delba_sta_tid (line 10389) | static unsigned int _send_delba_sta_tid(_adapter *adapter, u8 initiator,...
  function send_delba_sta_tid (line 10432) | inline unsigned int send_delba_sta_tid(_adapter *adapter, u8 initiator, ...
  function send_delba_sta_tid_wait_ack (line 10438) | inline unsigned int send_delba_sta_tid_wait_ack(_adapter *adapter, u8 in...
  function send_delba (line 10444) | unsigned int send_delba(_adapter *padapter, u8 initiator, u8 *addr)
  function send_beacon (line 10472) | unsigned int send_beacon(_adapter *padapter)
  function BOOLEAN (line 10555) | BOOLEAN IsLegal5GChannel(
  function u8 (line 10572) | u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, W...
  function start_create_ibss (line 10822) | void start_create_ibss(_adapter* padapter)
  function start_clnt_join (line 10887) | void start_clnt_join(_adapter* padapter)
  function start_clnt_auth (line 10997) | void start_clnt_auth(_adapter* padapter)
  function start_clnt_assoc (line 11022) | void start_clnt_assoc(_adapter* padapter)
  function receive_disconnect (line 11037) | unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAd...
  function process_80211d (line 11067) | static void process_80211d(PADAPTER padapter, WLAN_BSSID_EX *bssid)
  function report_survey_event (line 11356) | void report_survey_event(_adapter *padapter, union recv_frame *precv_frame)
  function report_surveydone_event (line 11422) | void report_surveydone_event(_adapter *padapter)
  function report_join_res (line 11469) | void report_join_res(_adapter *padapter, int res)
  function report_wmm_edca_update (line 11522) | void report_wmm_edca_update(_adapter *padapter)
  function report_del_sta_event (line 11568) | void report_del_sta_event(_adapter *padapter, unsigned char *MacAddr, un...
  function report_add_sta_event (line 11635) | void report_add_sta_event(_adapter *padapter, unsigned char* MacAddr, in...
  function rtw_port_switch_chk (line 11683) | bool rtw_port_switch_chk(_adapter *adapter)
  function update_sta_info (line 11781) | void update_sta_info(_adapter *padapter, struct sta_info *psta)
  function rtw_mlmeext_disconnect (line 11855) | static void rtw_mlmeext_disconnect(_adapter *padapter)
  function mlmeext_joinbss_event_callback (line 11952) | void mlmeext_joinbss_event_callback(_adapter *padapter, int join_res)
  function mlmeext_sta_add_event_callback (line 12065) | void mlmeext_sta_add_event_callback(_adapter *padapter, struct sta_info ...
  function mlmeext_sta_del_event_callback (line 12123) | void mlmeext_sta_del_event_callback(_adapter *padapter)
  function _linked_info_dump (line 12140) | void _linked_info_dump(_adapter *padapter)
  function rtw_delba_check (line 12197) | void rtw_delba_check(_adapter *padapter, struct sta_info *psta, u8 from_...
  function u8 (line 12237) | u8 chk_ap_is_alive(_adapter *padapter, struct sta_info *psta)
  function u8 (line 12289) | u8 chk_tdls_peer_sta_is_alive(_adapter *padapter, struct sta_info *psta)
  function linked_status_chk_tdls (line 12298) | void linked_status_chk_tdls(_adapter *padapter)
  function linked_status_chk (line 12387) | void linked_status_chk(_adapter *padapter, u8 from_timer)
  function survey_timer_hdl (line 12580) | void survey_timer_hdl(_adapter *padapter)
  function link_timer_hdl (line 12612) | void link_timer_hdl(_adapter *padapter)
  function addba_timer_hdl (line 12731) | void addba_timer_hdl(struct sta_info *psta)
  function report_sta_timeout_event (line 12751) | void report_sta_timeout_event(_adapter *padapter, u8 *MacAddr, unsigned ...
  function clnt_sa_query_timeout (line 12808) | void clnt_sa_query_timeout(_adapter *padapter)
  function sa_query_timer_hdl (line 12818) | void sa_query_timer_hdl(struct sta_info *psta)
  function u8 (line 12834) | u8 NULL_hdl(_adapter *padapter, u8 *pbuf)
  function rtw_start_auto_ap (line 12840) | void rtw_start_auto_ap(_adapter *adapter)
  function rtw_auto_ap_start_beacon (line 12849) | static int rtw_auto_ap_start_beacon(_adapter *adapter)
  function u8 (line 12951) | u8 setopmode_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 13020) | u8 createbss_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 13089) | u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 13267) | u8 disconnect_hdl(_adapter *padapter, unsigned char *pbuf)
  function scan_abort_hdl (line 13330) | static bool scan_abort_hdl(_adapter *adapter)
  function u8 (line 13364) | u8 rtw_scan_sparse(_adapter *adapter, struct rtw_ieee80211_channel *ch, ...
  function rtw_scan_ch_decision (line 13464) | static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211...
  function sitesurvey_res_reset (line 13535) | static void sitesurvey_res_reset(_adapter *adapter, struct sitesurvey_pa...
  function u8 (line 13566) | static u8 sitesurvey_pick_ch_behavior(_adapter *padapter, u8 *ch, RT_SCA...
  function site_survey (line 13705) | void site_survey(_adapter *padapter, u8 survey_channel, RT_SCAN_TYPE Sca...
  function survey_done_set_ch_bw (line 13772) | void survey_done_set_ch_bw(_adapter *padapter)
  function u8 (line 13831) | u8 sitesurvey_ps_annc(struct dvobj_priv *dvobj, bool ps)
  function sitesurvey_set_igi (line 13860) | void sitesurvey_set_igi(_adapter *adapter, bool enter)
  function u8 (line 13886) | u8 sitesurvey_cmd_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 14249) | u8 setauth_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 14263) | u8 setkey_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 14340) | u8 set_stakey_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 14407) | u8 add_ba_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 14447) | u8 chk_bmc_sleepq_cmd(_adapter* padapter)
  function u8 (line 14472) | u8 set_tx_beacon_cmd(_adapter* padapter)
  function u8 (line 14519) | u8 mlme_evt_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 14586) | u8 h2c_msg_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 14594) | u8 chk_bmc_sleepq_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 14663) | u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf)
  function change_band_update_ie (line 14687) | void change_band_update_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, ...
  function sint (line 14734) | sint check_buddy_mlmeinfo_state(_adapter *padapter, u32 state)
  function rtw_join_done_chk_ch (line 14760) | void rtw_join_done_chk_ch(_adapter *adapter, int join_res)
  type mlme_ext_priv (line 14860) | struct mlme_ext_priv
  type dvobj_priv (line 14885) | struct dvobj_priv
  type mlme_priv (line 14887) | struct mlme_priv
  type mlme_ext_priv (line 14888) | struct mlme_ext_priv
  function _rtw_get_ch_setting_union (line 15010) | int _rtw_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *off...
  function rtw_get_ch_setting_union (line 15071) | inline int rtw_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u...
  function rtw_get_ch_setting_union_no_self (line 15076) | inline int rtw_get_ch_setting_union_no_self(_adapter *adapter, u8 *ch, u...
  function _rtw_dev_iface_status (line 15081) | void _rtw_dev_iface_status(_adapter *adapter, u8 *sta_num, u8 *ld_sta_nu...
  function rtw_dev_iface_status (line 15143) | inline void rtw_dev_iface_status(_adapter *adapter, u8 *sta_num, u8 *ld_...
  function rtw_dev_iface_status_no_self (line 15149) | inline void rtw_dev_iface_status_no_self(_adapter *adapter, u8 *sta_num,...
  function u8 (line 15155) | u8 set_ch_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 15179) | u8 set_chplan_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 15208) | u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 15224) | u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 15262) | u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf)
  function u8 (line 15438) | u8 run_in_thread_hdl(_adapter *padapter, u8 *pbuf)
  function u8 (line 15453) | u8 rtw_getmacreg_hdl(_adapter *padapter, u8 *pbuf)

FILE: core/rtw_mp.c
  function rtfloor (line 36) | int rtfloor(float x)
  function u32 (line 47) | u32 read_macreg(_adapter *padapter, u32 addr, u32 sz)
  function write_macreg (line 71) | void write_macreg(_adapter *padapter, u32 addr, u32 val, u32 sz)
  function u32 (line 90) | u32 read_bbreg(_adapter *padapter, u32 addr, u32 bitmask)
  function write_bbreg (line 95) | void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val)
  function u32 (line 100) | u32 _read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask)
  function _write_rfreg (line 105) | void _write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask, u...
  function u32 (line 110) | u32 read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr)
  function write_rfreg (line 115) | void write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 val)
  function _init_mp_priv_ (line 120) | static void _init_mp_priv_(struct mp_priv *pmp_priv)
  function init_mp_priv_by_os (line 209) | static int init_mp_priv_by_os(struct mp_priv *pmp_priv)
  function init_mp_priv_by_os (line 232) | static int init_mp_priv_by_os(struct mp_priv *pmp_priv)
  function mp_init_xmit_attrib (line 274) | static void mp_init_xmit_attrib(struct mp_tx *pmptx, PADAPTER padapter)
  function s32 (line 320) | s32 init_mp_priv(PADAPTER padapter)
  function free_mp_priv (line 365) | void free_mp_priv(struct mp_priv *pmp_priv)
  function VOID (line 375) | static VOID PHY_IQCalibrate_default(
  function VOID (line 383) | static VOID PHY_LCCalibrate_default(
  function VOID (line 390) | static VOID PHY_SetRFPathSwitch_default(
  function mpt_InitHWConfig (line 399) | void mpt_InitHWConfig(PADAPTER Adapter)
  function PHY_IQCalibrate (line 493) | static void PHY_IQCalibrate(PADAPTER padapter, u8 bReCovery)
  function PHY_IQCalibrate (line 511) | static void PHY_IQCalibrate(PADAPTER padapter, u8 bReCovery)
  function PHY_IQCalibrate (line 522) | static void PHY_IQCalibrate(PADAPTER padapter, u8 bReCovery)
  function s32 (line 532) | s32
  function VOID (line 634) | VOID
  function u8 (line 663) | static u8 mpt_ProStartTest(PADAPTER padapter)
  function s32 (line 682) | s32 SetPowerTracking(PADAPTER padapter, u8 enable)
  function GetPowerTracking (line 689) | void GetPowerTracking(PADAPTER padapter, u8 *enable)
  function disable_dm (line 694) | static void disable_dm(PADAPTER padapter)
  function MPT_PwrCtlDM (line 719) | void MPT_PwrCtlDM(PADAPTER padapter, u32 bstart)
  function u32 (line 752) | u32 mp_join(PADAPTER padapter,u8 mode)
  function s32 (line 868) | s32 mp_start_test(PADAPTER padapter)
  function mp_stop_test (line 930) | void mp_stop_test(PADAPTER padapter)
  function VOID (line 986) | static VOID mpt_AdjustRFRegByRateByChan92CU(PADAPTER pAdapter, u8 RateId...
  function mpt_SwitchRfSetting (line 1047) | static void mpt_SwitchRfSetting(PADAPTER pAdapter)
  function MPT_CCKTxPowerAdjust (line 1054) | static void MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14)
  function MPT_CCKTxPowerAdjustbyIndex (line 1059) | static void MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven)
  function SetChannel (line 1072) | void SetChannel(PADAPTER pAdapter)
  function SetBandwidth (line 1081) | void SetBandwidth(PADAPTER pAdapter)
  function SetAntenna (line 1087) | void SetAntenna(PADAPTER pAdapter)
  function SetTxPower (line 1092) | int SetTxPower(PADAPTER pAdapter)
  function SetTxAGCOffset (line 1099) | void SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset)
  function SetDataRate (line 1112) | void SetDataRate(PADAPTER pAdapter)
  function MP_PHY_SetRFPathSwitch (line 1117) | void MP_PHY_SetRFPathSwitch(PADAPTER pAdapter ,BOOLEAN bMain)
  function s32 (line 1125) | s32 SetThermalMeter(PADAPTER pAdapter, u8 target_ther)
  function TriggerRFThermalMeter (line 1130) | static void TriggerRFThermalMeter(PADAPTER pAdapter)
  function u8 (line 1135) | static u8 ReadRFThermalMeter(PADAPTER pAdapter)
  function GetThermalMeter (line 1140) | void GetThermalMeter(PADAPTER pAdapter, u8 *value)
  function SetSingleCarrierTx (line 1145) | void SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart)
  function SetSingleToneTx (line 1151) | void SetSingleToneTx(PADAPTER pAdapter, u8 bStart)
  function SetCarrierSuppressionTx (line 1157) | void SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart)
  function SetCCKContinuousTx (line 1163) | void SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart)
  function SetOFDMContinuousTx (line 1169) | void SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart)
  function SetContinuousTx (line 1175) | void SetContinuousTx(PADAPTER pAdapter, u8 bStart)
  function PhySetTxPowerLevel (line 1182) | void PhySetTxPowerLevel(PADAPTER pAdapter)
  function dump_mpframe (line 1209) | static void dump_mpframe(PADAPTER padapter, struct xmit_frame *pmpframe)
  type xmit_frame (line 1214) | struct xmit_frame
  type xmit_priv (line 1214) | struct xmit_priv
  type xmit_frame (line 1216) | struct xmit_frame
  type xmit_buf (line 1217) | struct xmit_buf
  function thread_return (line 1242) | static thread_return mp_xmit_packet_thread(thread_context context)
  function fill_txdesc_for_mp (line 1299) | void fill_txdesc_for_mp(PADAPTER padapter, u8 *ptxdesc)
  function fill_tx_desc_8188e (line 1306) | void fill_tx_desc_8188e(PADAPTER padapter)
  function fill_tx_desc_8814a (line 1359) | void fill_tx_desc_8814a(PADAPTER padapter)
  function fill_tx_desc_8812a (line 1420) | void fill_tx_desc_8812a(PADAPTER padapter)
  function fill_tx_desc_8192e (line 1476) | void fill_tx_desc_8192e(PADAPTER padapter)
  function fill_tx_desc_8723b (line 1534) | void fill_tx_desc_8723b(PADAPTER padapter)
  function fill_tx_desc_8703b (line 1567) | void fill_tx_desc_8703b(PADAPTER padapter)
  function fill_tx_desc_8188f (line 1599) | void fill_tx_desc_8188f(PADAPTER padapter)
  function Rtw_MPSetMacTxEDCA (line 1629) | static void Rtw_MPSetMacTxEDCA(PADAPTER padapter)
  function SetPacketTx (line 1644) | void SetPacketTx(PADAPTER padapter)
  function SetPacketRx (line 1799) | void SetPacketRx(PADAPTER pAdapter, u8 bStartRx, u8 bAB)
  function ResetPhyRxPktCount (line 1847) | void ResetPhyRxPktCount(PADAPTER pAdapter)
  function u32 (line 1859) | static u32 GetPhyRxPktCounts(PADAPTER pAdapter, u32 selbit)
  function u32 (line 1873) | u32 GetPhyRxPktReceived(PADAPTER pAdapter)
  function u32 (line 1884) | u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter)
  function u32 (line 1898) | static u32 rtw_GetPSDData(PADAPTER pAdapter, u32 point)
  function u32 (line 1936) | u32 mp_query_psd(PADAPTER pAdapter, u8 *data)
  function _rtw_mp_xmit_priv (line 1987) | void _rtw_mp_xmit_priv (struct xmit_priv *pxmitpriv)
  function ULONG (line 2081) | ULONG getPowerDiffByRate8188E(
  function ULONG (line 2278) | static	ULONG
  function u8 (line 2376) | u8
  function u8 (line 2484) | u8 HwRateToMPTRate(u8 rate)
  function u8 (line 2665) | u8 rtw_mpRateParseFunc(PADAPTER pAdapter, u8 *targetStr)
  function ULONG (line 2694) | ULONG mpt_ProQueryCalTxPower(
  function dump_buf (line 2755) | static inline void dump_buf(u8 *buf, u32 len)
  function ByteToBit (line 2765) | void ByteToBit(
  function CRC16_generator (line 2781) | void CRC16_generator(
  function CCK_generator (line 2822) | void CCK_generator(
  function PMAC_Get_Pkt_Param (line 2899) | void PMAC_Get_Pkt_Param(
  function UINT (line 2967) | UINT LDPC_parameter_generator(
  function PMAC_Nsym_generator (line 3047) | void PMAC_Nsym_generator(
  function L_SIG_generator (line 3186) | void L_SIG_generator(
  function CRC8_generator (line 3278) | void CRC8_generator(
  function HT_SIG_generator (line 3308) | void HT_SIG_generator(
  function VHT_SIG_A_generator (line 3376) | void VHT_SIG_A_generator(
  function VHT_SIG_B_generator (line 3440) | void VHT_SIG_B_generator(
  function VHT_Delimiter_generator (line 3506) | void VHT_Delimiter_generator(

FILE: core/rtw_mp_ioctl.c
  function NDIS_STATUS (line 27) | NDIS_STATUS oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 52) | NDIS_STATUS oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 93) | NDIS_STATUS oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 134) | NDIS_STATUS oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 182) | NDIS_STATUS oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 235) | NDIS_STATUS oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_p...
  function NDIS_STATUS (line 272) | NDIS_STATUS oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 313) | NDIS_STATUS oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 339) | NDIS_STATUS oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *...
  function NDIS_STATUS (line 378) | NDIS_STATUS oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 420) | NDIS_STATUS oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 459) | NDIS_STATUS oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poi...
  function NDIS_STATUS (line 500) | NDIS_STATUS oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv *poi...
  function NDIS_STATUS (line 524) | NDIS_STATUS oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv ...
  function NDIS_STATUS (line 549) | NDIS_STATUS oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_pr...
  function NDIS_STATUS (line 575) | NDIS_STATUS oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv *poi...
  function NDIS_STATUS (line 595) | NDIS_STATUS oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv ...
  function NDIS_STATUS (line 620) | NDIS_STATUS oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv *po...
  function NDIS_STATUS (line 644) | NDIS_STATUS oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv *p...
  function NDIS_STATUS (line 675) | NDIS_STATUS oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv...
  function NDIS_STATUS (line 707) | NDIS_STATUS oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_p...
  function NDIS_STATUS (line 745) | NDIS_STATUS oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *po...
  function NDIS_STATUS (line 783) | NDIS_STATUS oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_pri...
  function NDIS_STATUS (line 821) | NDIS_STATUS oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_...
  function NDIS_STATUS (line 848) | NDIS_STATUS oid_rt_pro_set_modulation_hdl(struct oid_par_priv* poid_par_...
  function NDIS_STATUS (line 853) | NDIS_STATUS oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 876) | NDIS_STATUS oid_rt_pro8711_join_bss_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 917) | NDIS_STATUS oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_p...
  function NDIS_STATUS (line 969) | NDIS_STATUS oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 1032) | NDIS_STATUS oid_rt_pro_burst_read_register_hdl(struct oid_par_priv *poid...
  function NDIS_STATUS (line 1067) | NDIS_STATUS oid_rt_pro_burst_write_register_hdl(struct oid_par_priv *poi...
  function NDIS_STATUS (line 1100) | NDIS_STATUS oid_rt_pro_write_txcmd_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1147) | NDIS_STATUS oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv *poid_par_p...
  function NDIS_STATUS (line 1185) | NDIS_STATUS oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv *poid_par...
  function NDIS_STATUS (line 1218) | NDIS_STATUS oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1253) | NDIS_STATUS oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1286) | NDIS_STATUS oid_rt_rd_attrib_mem_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1329) | NDIS_STATUS oid_rt_wr_attrib_mem_hdl (struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1369) | NDIS_STATUS  oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv *poid_par_p...
  function NDIS_STATUS (line 1401) | NDIS_STATUS oid_rt_poll_rx_status_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1424) | NDIS_STATUS oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv *poid_p...
  function NDIS_STATUS (line 1472) | NDIS_STATUS oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv *poid_pa...
  function NDIS_STATUS (line 1500) | NDIS_STATUS oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_p...
  function NDIS_STATUS (line 1531) | NDIS_STATUS oid_rt_pro_read_tssi_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1576) | NDIS_STATUS oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv *poid_...
  function NDIS_STATUS (line 1612) | NDIS_STATUS oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 1659) | NDIS_STATUS oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1690) | NDIS_STATUS oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1725) | NDIS_STATUS oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv *poid_...
  function NDIS_STATUS (line 1764) | NDIS_STATUS oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv *poid_...
  function NDIS_STATUS (line 1813) | NDIS_STATUS oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv *poid_par...
  function NDIS_STATUS (line 1916) | NDIS_STATUS oid_rt_pro_add_sta_info_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 1966) | NDIS_STATUS oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv *poid_par_p...
  function u32 (line 2005) | static u32 mp_query_drv_var(_adapter *padapter, u8 offset, u32 var)
  function NDIS_STATUS (line 2180) | NDIS_STATUS oid_rt_pro_query_dr_variable_hdl(struct oid_par_priv *poid_p...
  function NDIS_STATUS (line 2220) | NDIS_STATUS oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 2263) | NDIS_STATUS oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2311) | NDIS_STATUS oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2354) | NDIS_STATUS oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 2411) | NDIS_STATUS oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_...
  function NDIS_STATUS (line 2443) | NDIS_STATUS oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 2468) | NDIS_STATUS oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2488) | NDIS_STATUS oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2549) | NDIS_STATUS oid_rt_set_crystal_cap_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2585) | NDIS_STATUS oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_...
  function NDIS_STATUS (line 2678) | NDIS_STATUS oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv *poid_p...
  function NDIS_STATUS (line 2714) | NDIS_STATUS oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv *poid_p...
  function mp_ioctl_xmit_packet_hdl (line 2754) | unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
  function mp_ioctl_xmit_packet_hdl (line 2789) | unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2869) | NDIS_STATUS oid_rt_set_power_down_hdl(struct oid_par_priv *poid_par_priv)
  function NDIS_STATUS (line 2911) | NDIS_STATUS oid_rt_get_power_mode_hdl(struct oid_par_priv *poid_par_priv)

FILE: core/rtw_odm.c
  function rtw_odm_dbg_comp_msg (line 105) | void rtw_odm_dbg_comp_msg(void *sel, _adapter *adapter)
  function rtw_odm_dbg_comp_set (line 123) | inline void rtw_odm_dbg_comp_set(_adapter *adapter, u64 comps)
  function rtw_odm_dbg_level_msg (line 128) | void rtw_odm_dbg_level_msg(void *sel, _adapter *adapter)
  function rtw_odm_dbg_level_set (line 144) | inline void rtw_odm_dbg_level_set(_adapter *adapter, u32 level)
  function rtw_odm_ability_msg (line 149) | void rtw_odm_ability_msg(void *sel, _adapter *adapter)
  function rtw_odm_ability_set (line 166) | inline void rtw_odm_ability_set(_adapter *adapter, u32 ability)
  function rtw_odm_adaptivity_ver_msg (line 171) | void rtw_odm_adaptivity_ver_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_en_msg (line 179) | void rtw_odm_adaptivity_en_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_mode_msg (line 200) | void rtw_odm_adaptivity_mode_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_dml_msg (line 218) | void rtw_odm_adaptivity_dml_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_dc_backoff_msg (line 233) | void rtw_odm_adaptivity_dc_backoff_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_config_msg (line 240) | void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_needed (line 249) | bool rtw_odm_adaptivity_needed(_adapter *adapter)
  function rtw_odm_adaptivity_parm_msg (line 261) | void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter)
  function rtw_odm_adaptivity_parm_set (line 285) | void rtw_odm_adaptivity_parm_set(_adapter *adapter, s8 TH_L2H_ini, s8 TH...
  function rtw_odm_get_perpkt_rssi (line 297) | void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter)
  function rtw_odm_acquirespinlock (line 307) | void rtw_odm_acquirespinlock(_adapter *adapter,	RT_SPINLOCK_TYPE type)
  function rtw_odm_releasespinlock (line 321) | void rtw_odm_releasespinlock(_adapter *adapter,	RT_SPINLOCK_TYPE type)
  function VOID (line 336) | VOID rtw_odm_radar_detect_reset(_adapter *adapter)
  function VOID (line 353) | VOID rtw_odm_radar_detect_disable(_adapter *adapter)
  function VOID (line 367) | VOID rtw_odm_radar_detect_enable(_adapter *adapter)
  function BOOLEAN (line 393) | BOOLEAN rtw_odm_radar_detect(_adapter *adapter)

FILE: core/rtw_p2p.c
  function rtw_p2p_is_channel_list_ok (line 26) | int rtw_p2p_is_channel_list_ok( u8 desired_ch, u8* ch_list, u8 ch_cnt )
  function is_any_client_associated (line 41) | int is_any_client_associated(_adapter *padapter)
  function u32 (line 46) | static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *p...
  function issue_group_disc_req (line 153) | static void issue_group_disc_req(struct wifidirect_info *pwdinfo, u8 *da)
  function issue_p2p_devdisc_resp (line 212) | static void issue_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *...
  function issue_p2p_provision_resp (line 286) | static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8...
  function issue_p2p_presence_resp (line 396) | static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 ...
  function u32 (line 480) | u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 538) | u32 build_beacon_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 659) | u32 build_probe_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 775) | u32 build_probe_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u...
  function u32 (line 970) | u32 build_assoc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1079) | u32 build_assoc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1179) | u32 build_nego_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1279) | u32 build_nego_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1380) | u32 build_nego_confirm_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1481) | u32 build_invitation_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1596) | u32 build_invitation_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1711) | u32 build_provdisc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1812) | u32 build_provdisc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 1915) | u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 2149) | u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *...
  function u32 (line 2283) | u32 build_assoc_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u...
  function u32 (line 2316) | u32 build_deauth_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
  function u32 (line 2323) | u32 process_probe_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe...
  function u32 (line 2404) | u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe...
  function u32 (line 2530) | u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe,...
  function u32 (line 2619) | u32 process_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe...
  function u8 (line 2624) | u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo,  u8 *pframe...
  function u8 (line 2670) | u8 process_p2p_provdisc_resp(struct wifidirect_info *pwdinfo,  u8 *pframe)
  function u8 (line 2676) | u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_cont...
  function u8 (line 2701) | u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch)
  function u8 (line 2716) | u8 rtw_p2p_ch_inclusion(struct mlme_ext_priv *pmlmeext, u8 *peer_ch_list...
  function u8 (line 2737) | u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8...
  function u8 (line 2977) | u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u...
  function u8 (line 3240) | u8 process_p2p_group_negotation_confirm( struct wifidirect_info *pwdinfo...
  function u8 (line 3336) | u8 process_p2p_presence_req(struct wifidirect_info *pwdinfo, u8 *pframe,...
  function find_phase_handler (line 3353) | void find_phase_handler( _adapter*	padapter )
  function restore_p2p_state_handler (line 3379) | void restore_p2p_state_handler( _adapter*	padapter )
  function pre_tx_invitereq_handler (line 3422) | void pre_tx_invitereq_handler( _adapter*	padapter )
  function pre_tx_provdisc_handler (line 3436) | void pre_tx_provdisc_handler( _adapter*	padapter )
  function pre_tx_negoreq_handler (line 3450) | void pre_tx_negoreq_handler( _adapter*	padapter )
  function p2p_concurrent_handler (line 3465) | void p2p_concurrent_handler( _adapter*	padapter )
  function ro_ch_handler (line 3594) | static void ro_ch_handler(_adapter *padapter)
  function ro_ch_timer_process (line 3646) | static void ro_ch_timer_process (void *FunctionContext)
  function rtw_change_p2pie_op_ch (line 3660) | static void rtw_change_p2pie_op_ch(_adapter *padapter, const u8 *frame_b...
  function rtw_change_p2pie_ch_list (line 3689) | static void rtw_change_p2pie_ch_list(_adapter *padapter, const u8 *frame...
  function rtw_chk_p2pie_ch_list_with_buddy (line 3729) | static bool rtw_chk_p2pie_ch_list_with_buddy(_adapter *padapter, const u...
  function rtw_chk_p2pie_op_ch_with_buddy (line 3779) | static bool rtw_chk_p2pie_op_ch_with_buddy(_adapter *padapter, const u8 ...
  function rtw_cfg80211_adjust_p2pie_channel (line 3816) | static void rtw_cfg80211_adjust_p2pie_channel(_adapter *padapter, const ...
  function rtw_append_wfd_ie (line 3872) | void rtw_append_wfd_ie(_adapter *padapter, u8 *buf, u32* len)
  function u8 (line 3988) | u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len)
  function rtw_p2p_nego_intent_compare (line 4041) | bool rtw_p2p_nego_intent_compare(u8 req, u8 resp)
  function rtw_p2p_check_frames (line 4051) | int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx)
  function rtw_init_cfg80211_wifidirect_info (line 4413) | void rtw_init_cfg80211_wifidirect_info( _adapter*	padapter)
  function p2p_protocol_wk_hdl (line 4423) | void p2p_protocol_wk_hdl(_adapter *padapter, int intCmdType)
  function process_p2p_cross_connect_ie (line 4511) | int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength)
  function process_p2p_ps_ie (line 4552) | void process_p2p_ps_ie(PADAPTER padapter, u8 *IEs, u32 IELength)
  function p2p_ps_wk_hdl (line 4663) | void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state)
  function u8 (line 4723) | u8 p2p_ps_wk_cmd(_adapter*padapter, u8 p2p_ps_state, u8 enqueue)
  function reset_ch_sitesurvey_timer_process (line 4780) | static void reset_ch_sitesurvey_timer_process (void *FunctionContext)
  function reset_ch_sitesurvey_timer_process2 (line 4799) | static void reset_ch_sitesurvey_timer_process2 (void *FunctionContext)
  function restore_p2p_state_timer_process (line 4818) | static void restore_p2p_state_timer_process (void *FunctionContext)
  function pre_tx_scan_timer_process (line 4829) | static void pre_tx_scan_timer_process (void *FunctionContext)
  function find_phase_timer_process (line 4874) | static void find_phase_timer_process (void *FunctionContext)
  function ap_p2p_switch_timer_process (line 4888) | void ap_p2p_switch_timer_process (void *FunctionContext)
  function reset_global_wifidirect_info (line 4907) | void reset_global_wifidirect_info( _adapter* padapter )
  function rtw_init_wifi_display_info (line 4919) | int rtw_init_wifi_display_info(_adapter* padapter)
  function rtw_init_wifidirect_timers (line 4943) | void rtw_init_wifidirect_timers(_adapter* padapter)
  function rtw_init_wifidirect_addrs (line 4957) | void rtw_init_wifidirect_addrs(_adapter* padapter, u8 *dev_addr, u8 *ifa...
  function init_wifidirect_info (line 4972) | void init_wifidirect_info( _adapter* padapter, enum P2P_ROLE role)
  type P2P_ROLE (line 5150) | enum P2P_ROLE
  type P2P_STATE (line 5171) | enum P2P_STATE
  function dbg_rtw_p2p_set_state (line 5225) | void dbg_rtw_p2p_set_state(struct wifidirect_info *wdinfo, enum P2P_STAT...
  function dbg_rtw_p2p_set_pre_state (line 5239) | void dbg_rtw_p2p_set_pre_state(struct wifidirect_info *wdinfo, enum P2P_...
  function dbg_rtw_p2p_restore_state (line 5254) | void dbg_rtw_p2p_restore_state(struct wifidirect_info *wdinfo, const cha...
  function dbg_rtw_p2p_set_role (line 5268) | void dbg_rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE ...
  function rtw_p2p_enable (line 5285) | int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role)

FILE: core/rtw_pwrctrl.c
  function rtw_fw_ps_state (line 26) | int rtw_fw_ps_state(PADAPTER padapter)
  function _ips_enter (line 75) | void _ips_enter(_adapter * padapter)
  function ips_enter (line 102) | void ips_enter(_adapter * padapter)
  function _ips_leave (line 116) | int _ips_leave(_adapter * padapter)
  function ips_leave (line 143) | int ips_leave(_adapter * padapter)
  function rtw_pwr_unassociated_idle (line 186) | bool rtw_pwr_unassociated_idle(_adapter *adapter)
  type mlme_priv (line 228) | struct mlme_priv
  type wifidirect_info (line 230) | struct wifidirect_info
  type cfg80211_wifidirect_info (line 232) | struct cfg80211_wifidirect_info
  function rtw_ps_processor (line 283) | void rtw_ps_processor(_adapter*padapter)
  function pwr_state_check_handler (line 430) | void pwr_state_check_handler(RTW_TIMER_HDL_ARGS)
  function traffic_check_for_leave_lps (line 437) | void	traffic_check_for_leave_lps(PADAPTER padapter, u8 tx, u32 tx_packets)
  function rtw_set_rpwm (line 510) | void rtw_set_rpwm(PADAPTER padapter, u8 pslv)
  function u8 (line 655) | u8 PS_RDY_CHECK(_adapter * padapter)
  function rtw_set_fw_in_ips_mode (line 720) | void rtw_set_fw_in_ips_mode(PADAPTER padapter, u8 enable)
  function rtw_set_ps_mode (line 836) | void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps, u8 bcn_...
  function s32 (line 1059) | s32 LPS_RF_ON_check(PADAPTER padapter, u32 delay_ms)
  function LPS_Enter (line 1095) | void LPS_Enter(PADAPTER padapter, const char *msg)
  function LPS_Leave (line 1163) | void LPS_Leave(PADAPTER padapter, const char *msg)
  function LeaveAllPowerSaveModeDirect (line 1209) | void LeaveAllPowerSaveModeDirect(PADAPTER Adapter)
  function LeaveAllPowerSaveMode (line 1337) | void LeaveAllPowerSaveMode(IN PADAPTER Adapter)
  function LPS_Leave_check (line 1416) | void LPS_Leave_check(
  function cpwm_int_hdl (line 1470) | void cpwm_int_hdl(
  function cpwm_event_callback (line 1520) | static void cpwm_event_callback(struct work_struct *work)
  function rpwmtimeout_workitem_callback (line 1534) | static void rpwmtimeout_workitem_callback(struct work_struct *work)
  function pwr_rpwm_timeout_handler (line 1587) | static void pwr_rpwm_timeout_handler(void *FunctionContext)
  function register_task_alive (line 1607) | __inline static void register_task_alive(struct pwrctrl_priv *pwrctrl, u...
  function unregister_task_alive (line 1612) | __inline static void unregister_task_alive(struct pwrctrl_priv *pwrctrl,...
  function s32 (line 1633) | s32 rtw_register_task_alive(PADAPTER padapter, u32 task)
  function rtw_unregister_task_alive (line 1689) | void rtw_unregister_task_alive(PADAPTER padapter, u32 task)
  function s32 (line 1748) | s32 rtw_register_tx_alive(PADAPTER padapter)
  function s32 (line 1807) | s32 rtw_register_cmd_alive(PADAPTER padapter)
  function s32 (line 1862) | s32 rtw_register_rx_alive(PADAPTER padapter)
  function s32 (line 1893) | s32 rtw_register_evt_alive(PADAPTER padapter)
  function rtw_unregister_tx_alive (line 1922) | void rtw_unregister_tx_alive(PADAPTER padapter)
  function rtw_unregister_cmd_alive (line 1989) | void rtw_unregister_cmd_alive(PADAPTER padapter)
  function rtw_unregister_rx_alive (line 2052) | void rtw_unregister_rx_alive(PADAPTER padapter)
  function rtw_unregister_evt_alive (line 2073) | void rtw_unregister_evt_alive(PADAPTER padapter)
  type work_struct (line 2094) | struct work_struct
  function rtw_init_pwrctrl_priv (line 2097) | void rtw_init_pwrctrl_priv(PADAPTER padapter)
  function rtw_free_pwrctrl_priv (line 2219) | void rtw_free_pwrctrl_priv(PADAPTER adapter)
  function resume_workitem_callback (line 2266) | static void resume_workitem_callback(struct work_struct *work)
  function rtw_resume_in_workqueue (line 2279) | void rtw_resume_in_workqueue(struct pwrctrl_priv *pwrpriv)
  function rtw_is_earlysuspend_registered (line 2295) | inline bool rtw_is_earlysuspend_registered(struct pwrctrl_priv *pwrpriv)
  function rtw_is_do_late_resume (line 2300) | inline bool rtw_is_do_late_resume(struct pwrctrl_priv *pwrpriv)
  function rtw_set_do_late_resume (line 2305) | inline void rtw_set_do_late_resume(struct pwrctrl_priv *pwrpriv, bool en...
  function rtw_early_suspend (line 2313) | static void rtw_early_suspend(struct early_suspend *h)
  function rtw_late_resume (line 2321) | static void rtw_late_resume(struct early_suspend *h)
  function rtw_register_early_suspend (line 2335) | void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv)
  function rtw_unregister_early_suspend (line 2348) | void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv)
  function rtw_early_suspend (line 2366) | static void rtw_early_suspend(android_early_suspend_t *h)
  function rtw_late_resume (line 2374) | static void rtw_late_resume(android_early_suspend_t *h)
  function rtw_register_early_suspend (line 2389) | void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv)
  function rtw_unregister_early_suspend (line 2400) | void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv)
  function u8 (line 2414) | u8 rtw_interface_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id,u8...
  function rtw_set_ips_deny (line 2423) | inline void rtw_set_ips_deny(_adapter *padapter, u32 ms)
  type dvobj_priv (line 2438) | struct dvobj_priv
  type pwrctrl_priv (line 2439) | struct pwrctrl_priv
  type mlme_priv (line 2440) | struct mlme_priv
  function rtw_pm_set_lps (line 2587) | int rtw_pm_set_lps(_adapter *padapter, u8 mode)
  function rtw_pm_set_ips (line 2616) | int rtw_pm_set_ips(_adapter *padapter, u8 mode)
  function rtw_ps_deny (line 2641) | void rtw_ps_deny(PADAPTER padapter, PS_DENY_REASON reason)
  function rtw_ps_deny_cancel (line 2669) | void rtw_ps_deny_cancel(PADAPTER padapter, PS_DENY_REASON reason)
  function u32 (line 2697) | u32 rtw_ps_deny_get(PADAPTER padapter)

FILE: core/rtw_recv.c
  function _rtw_init_sta_recv_priv (line 52) | void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv)
  function sint (line 71) | sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter)
  type recv_priv (line 163) | struct recv_priv
  function rtw_mfree_recv_priv_lock (line 164) | void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
  function _rtw_free_recv_priv (line 182) | void _rtw_free_recv_priv (struct recv_priv *precvpriv)
  type recv_priv (line 210) | struct recv_priv
  function rtw_init_recvframe (line 254) | void rtw_init_recvframe(union recv_frame *precvframe, struct recv_priv *...
  function rtw_free_recvframe (line 262) | int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_...
  function sint (line 307) | sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
  function sint (line 331) | sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
  function rtw_free_recvframe_queue (line 363) | void rtw_free_recvframe_queue(_queue *pframequeue,  _queue *pfree_recv_q...
  function u32 (line 391) | u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter)
  function sint (line 407) | sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue)
  function sint (line 421) | sint rtw_enqueue_recvbuf(struct recv_buf *precvbuf, _queue *queue)
  type recv_buf (line 442) | struct recv_buf
  type recv_buf (line 445) | struct recv_buf
  function sint (line 481) | sint recvframe_chkmic(_adapter *adapter,  union recv_frame *precvframe){
  type rx_pkt_attrib (line 631) | struct rx_pkt_attrib
  type security_priv (line 632) | struct security_priv
  type recv_frame_hdr (line 775) | struct recv_frame_hdr
  type sta_info (line 776) | struct sta_info
  type sta_priv (line 777) | struct sta_priv
  type rx_pkt_attrib (line 781) | struct rx_pkt_attrib
  type stainfo_rxcache (line 860) | struct stainfo_rxcache
  function sint (line 861) | sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stain...
  function process_pwrbit_data (line 896) | void process_pwrbit_data(_adapter *padapter, union recv_frame *precv_frame)
  type rx_pkt_attrib (line 945) | struct rx_pkt_attrib
  type sta_priv (line 946) | struct sta_priv
  type sta_info (line 947) | struct sta_info
  function sint (line 1015) | sint OnTDLS(_adapter *adapter, union recv_frame *precv_frame)
  type sta_info (line 1105) | struct sta_info
  function count_rx_stats (line 1106) | void count_rx_stats(_adapter *padapter, union recv_frame *prframe, struc...
  type sta_info (line 1164) | struct sta_info
  function sint (line 1166) | sint sta2sta_data_frame(
  type sta_info (line 1390) | struct sta_info
  function sint (line 1391) | sint ap2sta_data_frame(
  type sta_info (line 1559) | struct sta_info
  function sint (line 1560) | sint sta2ap_data_frame(
  function sint (line 1653) | sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *prec...
  function sint (line 1825) | sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv...
  function sint (line 1930) | sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv...
  function sint (line 2090) | static sint validate_80211w_mgmt(_adapter *adapter, union recv_frame *pr...
  function dump_rx_packet (line 2216) | static inline void dump_rx_packet(u8 *ptr)
  function sint (line 2228) | sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
  function sint (line 2443) | sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
  function sint (line 2567) | sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
  function recvframe_expand_pkt (line 2700) | static void recvframe_expand_pkt(
  type recv_frame_hdr (line 2763) | struct recv_frame_hdr
  type recv_frame_hdr (line 2857) | struct recv_frame_hdr
  type sta_info (line 2858) | struct sta_info
  type sta_priv (line 2859) | struct sta_priv
  function amsdu_to_msdu (line 2979) | int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe)
  type recv_reorder_ctrl (line 3062) | struct recv_reorder_ctrl
  function check_indicate_seq (line 3063) | int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_...
  type recv_reorder_ctrl (line 3136) | struct recv_reorder_ctrl
  function enqueue_reorder_recvframe (line 3137) | int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, u...
  type debug_priv (line 3198) | struct debug_priv
  function recv_indicatepkts_pkt_loss_cnt (line 3199) | void recv_indicatepkts_pkt_loss_cnt(struct debug_priv *pdbgpriv, u64 pre...
  type recv_reorder_ctrl (line 3211) | struct recv_reorder_ctrl
  function recv_indicatepkts_in_order (line 3212) | int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_c...
  function recv_indicatepkt_reorder (line 3385) | int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
  function rtw_reordering_ctrl_timeout_handler (line 3568) | void rtw_reordering_ctrl_timeout_handler(void *pcontext)
  type mlme_priv (line 3598) | struct mlme_priv
  type sta_info (line 3600) | struct sta_info
  type ht_priv (line 3605) | struct ht_priv
  function validate_mp_recv_frame (line 3668) | int validate_mp_recv_frame(_adapter *adapter, union recv_frame *precv_fr...
  function sint (line 3702) | static sint MPwlanhdr_to_ethhdr ( union recv_frame *precvframe)
  function mp_recv_frame (line 3784) | int mp_recv_frame(_adapter *padapter, union recv_frame *rframe)
  function sint (line 3932) | static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *prec...
  function recv_frame_monitor (line 4237) | int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe)
  function recv_func_prehandle (line 4284) | int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe)
  function recv_func_posthandle (line 4324) | int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
  function recv_func (line 4491) | int recv_func(_adapter *padapter, union recv_frame *rframe)
  function s32 (line 4557) | s32 rtw_recv_entry(union recv_frame *precvframe)
  function rtw_signal_stat_timer_hdl (line 4600) | void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS){
  function rx_process_rssi (line 4699) | static void rx_process_rssi(_adapter *padapter,union recv_frame *prframe)
  function rx_process_link_qual (line 4751) | static void rx_process_link_qual(_adapter *padapter,union recv_frame *pr...
  function rx_process_phy_info (line 4813) | void rx_process_phy_info(_adapter *padapter, union recv_frame *rframe)
  function rx_query_phy_status (line 4828) | void rx_query_phy_status(
  function rtw_inc_and_chk_continual_no_rx_packet (line 4931) | int rtw_inc_and_chk_continual_no_rx_packet(struct sta_info *sta, int tid...
  function rtw_reset_continual_no_rx_packet (line 4946) | void rtw_reset_continual_no_rx_packet(struct sta_info *sta, int tid_index)

FILE: core/rtw_rf.c
  type center_chs_ent (line 45) | struct center_chs_ent {
  type center_chs_ent (line 50) | struct center_chs_ent
  function u8 (line 56) | inline u8 center_chs_5g_num(u8 bw)
  function u8 (line 64) | inline u8 center_chs_5g(u8 bw, u8 id)
  function rtw_ch2freq (line 75) | int rtw_ch2freq(int chan)
  function rtw_freq2ch (line 97) | int rtw_freq2ch(int freq)
  function rtw_chbw_to_freq_range (line 114) | bool rtw_chbw_to_freq_range(u8 ch, u8 bw, u8 offset, u32 *hi, u32 *lo)
  type country_chplan (line 191) | struct country_chplan {
  type country_chplan (line 196) | struct country_chplan
  type country_chplan (line 316) | struct country_chplan
  function rtw_get_chplan_from_country (line 324) | int rtw_get_chplan_from_country(const char *country_code)
  function rtw_ch_to_bb_gain_sel (line 341) | int rtw_ch_to_bb_gain_sel(int ch)
  function s8 (line 363) | s8 rtw_rf_get_kfree_tx_gain_offset(_adapter *padapter, u8 path, u8 ch)
  function rtw_rf_set_tx_gain_offset (line 388) | void rtw_rf_set_tx_gain_offset(_adapter *adapter, u8 path, s8 offset)
  function rtw_rf_apply_tx_gain_offset (line 433) | void rtw_rf_apply_tx_gain_offset(_adapter *adapter, u8 ch)
  function rtw_is_dfs_range (line 448) | bool rtw_is_dfs_range(u32 hi, u32 lo)
  function rtw_is_dfs_ch (line 453) | bool rtw_is_dfs_ch(u8 ch, u8 bw, u8 offset)
  function rtw_is_long_cac_range (line 463) | bool rtw_is_long_cac_range(u32 hi, u32 lo)
  function rtw_is_long_cac_ch (line 468) | bool rtw_is_long_cac_ch(u8 ch, u8 bw, u8 offset)

FILE: core/rtw_security.c
  type arc4context (line 108) | struct arc4context
  function arcfour_init (line 116) | static void arcfour_init(struct arc4context 	*parc4ctx, u8 * key,u32	key...
  function u32 (line 143) | static u32 arcfour_byte(	struct arc4context	*parc4ctx)
  function arcfour_encrypt (line 164) | static void arcfour_encrypt(	struct arc4context	*parc4ctx,
  function u8 (line 180) | static u8 crc32_reverseBit( u8 data)
  function crc32_init (line 185) | static void crc32_init(void)
  function u32 (line 217) | static u32 getcrc32(u8 *buf, sint len)
  function rtw_wep_encrypt (line 238) | void rtw_wep_encrypt(_adapter *padapter, u8 *pxmitframe)
  function rtw_wep_decrypt (line 319) | void rtw_wep_decrypt(_adapter  *padapter, u8 *precvframe)
  function u32 (line 373) | static u32 secmicgetuint32( u8 * p )
  function secmicputuint32 (line 387) | static void secmicputuint32( u8 * p, u32 val )
  function secmicclear (line 400) | static void secmicclear(struct mic_data *pmicdata)
  function rtw_secmicsetkey (line 411) | void rtw_secmicsetkey(struct mic_data *pmicdata, u8 * key )
  function rtw_secmicappendbyte (line 422) | void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b )
  function rtw_secmicappend (line 447) | void rtw_secmicappend(struct mic_data *pmicdata, u8 * src, u32 nbytes )
  function rtw_secgetmic (line 459) | void rtw_secgetmic(struct mic_data *pmicdata, u8 * dst )
  function rtw_seccalctkipmic (line 482) | void rtw_seccalctkipmic(u8 * key,u8 *header,u8 *data,u32 data_len,u8 *mi...
  function phase1 (line 632) | static void phase1(u16 *p1k,const u8 *tk,const u8 *ta,u32 iv32)
  function phase2 (line 681) | static void phase2(u8 *rc4key,const u8 *tk,const u16 *p1k,u16 iv16)
  function u32 (line 728) | u32	rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe)
  function u32 (line 855) | u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe)
  function xor_128 (line 1072) | static void xor_128(u8 *a, u8 *b, u8 *out)
  function xor_32 (line 1084) | static void xor_32(u8 *a, u8 *b, u8 *out)
  function u8 (line 1096) | static u8 sbox(u8 a)
  function next_key (line 1102) | static void next_key(u8 *key, sint round)
  function byte_sub (line 1129) | static void byte_sub(u8 *in, u8 *out)
  function shift_row (line 1141) | static void shift_row(u8 *in, u8 *out)
  function mix_column (line 1164) | static void mix_column(u8 *in, u8 *out)
  function aes128k128d (line 1227) | static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext)
  function construct_mic_iv (line 1272) | static void construct_mic_iv(
  function construct_mic_header1 (line 1314) | static void construct_mic_header1(
  function construct_mic_header2 (line 1354) | static void construct_mic_header2(
  function construct_ctr_preload (line 1408) | static void construct_ctr_preload(
  function bitwise_xor (line 1452) | static void bitwise_xor(u8 *ina, u8 *inb, u8 *out)
  function sint (line 1464) | static sint aes_cipher(u8 *key, uint	hdrlen,
  function u32 (line 1665) | u32	rtw_aes_encrypt(_adapter *padapter, u8 *pxmitframe)
  function sint (line 1785) | static sint aes_decipher(u8 *key, uint	hdrlen,
  function u32 (line 2060) | u32	rtw_aes_decrypt(_adapter *padapter, u8 *precvframe)
  function u32 (line 2183) | u32	rtw_BIP_verify(_adapter *padapter, u8 *precvframe)
  function sha256_compress (line 2285) | static int sha256_compress(struct sha256_state *md, unsigned char *buf)
  function sha256_init (line 2327) | static void sha256_init(struct sha256_state *md)
  function sha256_process (line 2348) | static int sha256_process(struct sha256_state *md, unsigned char *in,
  function sha256_done (line 2389) | static int sha256_done(struct sha256_state *md, unsigned char *out)
  function sha256_vector (line 2438) | static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len,
  function u8 (line 2453) | static u8 os_strlen(const char *s)
  function os_memcmp (line 2461) | static int os_memcmp(void *s1, void *s2, u8 n)
  function hmac_sha256_vector (line 2488) | static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
  function sha256_prf (line 2564) | static void sha256_prf(u8 *key, size_t key_len, char *label,
  function rijndaelKeySetupEnc (line 2780) | static void rijndaelKeySetupEnc(u32 rk[/*44*/], const u8 cipherKey[])
  function rijndaelEncrypt (line 2801) | static void rijndaelEncrypt(u32 rk[/*44*/], u8 pt[16], u8 ct[16])
  function aes_128_encrypt (line 2880) | static void aes_128_encrypt(void *ctx, u8 *plain, u8 *crypt)
  function gf_mulx (line 2886) | static void gf_mulx(u8 *pad)
  function aes_encrypt_deinit (line 2898) | static void aes_encrypt_deinit(void *ctx)
  function omac1_aes_128_vector (line 2918) | static int omac1_aes_128_vector(u8 *key, size_t num_elem,
  function omac1_aes_128 (line 2991) | int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac)
  function wpa_tdls_generate_tpk (line 2998) | void wpa_tdls_generate_tpk(_adapter *padapter, PVOID sta)
  function wpa_tdls_ftie_mic (line 3058) | int wpa_tdls_ftie_mic(u8 *kck, u8 trans_seq,
  function wpa_tdls_teardown_ftie_mic (line 3117) | int wpa_tdls_teardown_ftie_mic(u8 *kck, u8 *lnkid, u16 reason,
  function tdls_verify_mic (line 3154) | int tdls_verify_mic(u8 *kck, u8 trans_seq,
  function rtw_use_tkipkey_handler (line 3217) | void rtw_use_tkipkey_handler(RTW_TIMER_HDL_ARGS)
  function rtw_sec_restore_wep_key (line 3244) | void rtw_sec_restore_wep_key(_adapter *adapter)
  function u8 (line 3261) | u8 rtw_handle_tkip_countermeasure(_adapter* adapter, const char *caller)
  function u16 (line 3284) | u16 rtw_cal_crc16(u8 data, u16 crc)
  function u16 (line 3335) | u16 rtw_calc_crc(u8  *pdata, int length)

FILE: core/rtw_sreset.c
  function sreset_init_value (line 25) | void sreset_init_value(_adapter *padapter)
  function sreset_reset_value (line 38) | void sreset_reset_value(_adapter *padapter)
  function u8 (line 50) | u8 sreset_get_wifi_status(_adapter *padapter)
  function sreset_set_wifi_error_status (line 88) | void sreset_set_wifi_error_status(_adapter *padapter, u32 status)
  function sreset_set_trigger_point (line 96) | void sreset_set_trigger_point(_adapter *padapter, s32 tgp)
  function sreset_inprogress (line 104) | bool sreset_inprogress(_adapter *padapter)
  function sreset_restore_security_station (line 114) | void sreset_restore_security_station(_adapter *padapter)
  function sreset_restore_network_station (line 172) | void sreset_restore_network_station(_adapter *padapter)
  function sreset_restore_network_status (line 241) | void sreset_restore_network_status(_adapter *padapter)
  function sreset_stop_adapter (line 260) | void sreset_stop_adapter(_adapter *padapter)
  function sreset_start_adapter (line 290) | void sreset_start_adapter(_adapter *padapter)
  function sreset_reset (line 315) | void sreset_reset(_adapter *padapter)

FILE: core/rtw_sta_mgt.c
  type sta_info (line 31) | struct sta_info
  function _rtw_init_stainfo (line 32) | void _rtw_init_stainfo(struct sta_info *psta)
  function u32 (line 89) | u32	_rtw_init_sta_priv(struct	sta_priv *pstapriv)
  function rtw_stainfo_offset (line 163) | inline int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info ...
  type sta_info (line 173) | struct sta_info
  type sta_priv (line 173) | struct sta_priv
  type sta_info (line 178) | struct sta_info
  type sta_info (line 178) | struct sta_info
  type sta_xmit_priv (line 181) | struct sta_xmit_priv
  function _rtw_free_sta_xmit_priv_lock (line 182) | void	_rtw_free_sta_xmit_priv_lock(struct sta_xmit_priv *psta_xmitpriv)
  function _rtw_free_sta_recv_priv_lock (line 195) | static void	_rtw_free_sta_recv_priv_lock(struct sta_recv_priv *psta_recv...
  type sta_info (line 207) | struct sta_info
  function rtw_mfree_stainfo (line 208) | void rtw_mfree_stainfo(struct sta_info *psta)
  type sta_priv (line 223) | struct sta_priv
  function rtw_mfree_all_stainfo (line 224) | void rtw_mfree_all_stainfo(struct sta_priv *pstapriv )
  type sta_priv (line 251) | struct	sta_priv
  function rtw_mfree_sta_priv_lock (line 252) | void rtw_mfree_sta_priv_lock(struct	sta_priv *pstapriv)
  function u32 (line 274) | u32	_rtw_free_sta_priv(struct	sta_priv *pstapriv)
  type sta_info (line 321) | struct	sta_info
  type sta_priv (line 321) | struct	sta_priv
  type sta_info (line 327) | struct sta_info
  type recv_reorder_ctrl (line 329) | struct recv_reorder_ctrl
  function u32 (line 454) | u32	rtw_free_stainfo(_adapter *padapter , struct sta_info *psta)
  function rtw_free_all_stainfo (line 664) | void rtw_free_all_stainfo(_adapter *padapter)
  type sta_info (line 723) | struct sta_info
  type sta_priv (line 723) | struct sta_priv
  type sta_info (line 730) | struct sta_info
  function u32 (line 779) | u32 rtw_init_bcmc_stainfo(_adapter* padapter)
  type sta_info (line 821) | struct sta_info
  type sta_info (line 823) | struct sta_info
  type sta_priv (line 824) | struct sta_priv
  function u8 (line 833) | u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr)

FILE: core/rtw_tdls.c
  function rtw_reset_tdls_info (line 31) | void rtw_reset_tdls_info(_adapter* padapter)
  function rtw_init_tdls_info (line 70) | int rtw_init_tdls_info(_adapter* padapter)
  function rtw_free_tdls_info (line 91) | void rtw_free_tdls_info(struct tdls_info *ptdlsinfo)
  function check_ap_tdls_prohibited (line 100) | int check_ap_tdls_prohibited(u8 *pframe, u8 pkt_len)
  function check_ap_tdls_ch_switching_prohibited (line 115) | int check_ap_tdls_ch_switching_prohibited(u8 *pframe, u8 pkt_len)
  function _issue_nulldata_to_TDLS_peer_STA (line 130) | int _issue_nulldata_to_TDLS_peer_STA(_adapter *padapter, unsigned char *...
  function issue_nulldata_to_TDLS_peer_STA (line 204) | int issue_nulldata_to_TDLS_peer_STA(_adapter *padapter, unsigned char *d...
  function free_tdls_sta (line 260) | void free_tdls_sta(_adapter *padapter, struct sta_info *ptdls_sta)
  function rtw_tdls_set_key (line 293) | void rtw_tdls_set_key(_adapter *padapter, struct sta_info *ptdls_sta)
  function rtw_tdls_process_ht_cap (line 300) | void rtw_tdls_process_ht_cap(_adapter *padapter, struct sta_info *ptdls_...
  function u8 (line 396) | u8 *rtw_tdls_set_ht_cap(_adapter *padapter, u8 *pframe, struct pkt_attri...
  function rtw_tdls_process_vht_cap (line 407) | void rtw_tdls_process_vht_cap(_adapter *padapter, struct sta_info *ptdls...
  function u8 (line 493) | u8 *rtw_tdls_set_aid(_adapter *padapter, u8 *pframe, struct pkt_attrib *...
  function u8 (line 498) | u8 *rtw_tdls_set_vht_cap(_adapter *padapter, u8 *pframe, struct pkt_attr...
  function u8 (line 510) | u8 *rtw_tdls_set_vht_operation(_adapter *padapter, u8 *pframe, struct pk...
  function u8 (line 520) | u8 *rtw_tdls_set_vht_op_mode_notify(_adapter *padapter, u8 *pframe, stru...
  function u8 (line 532) | u8 *rtw_tdls_set_sup_ch(struct mlme_ext_priv *pmlmeext, u8 *pframe, stru...
  function u8 (line 550) | u8 *rtw_tdls_set_rsnie(struct tdls_txmgmt *ptxmgmt, u8 *pframe, struct p...
  function u8 (line 567) | u8 *rtw_tdls_set_ext_cap(u8 *pframe, struct pkt_attrib *pattrib)
  function u8 (line 572) | u8 *rtw_tdls_set_qos_cap(u8 *pframe, struct pkt_attrib *pattrib)
  function u8 (line 577) | u8 *rtw_tdls_set_ftie(struct tdls_txmgmt *ptxmgmt, u8 *pframe, struct pk...
  function u8 (line 597) | u8 *rtw_tdls_set_timeout_interval(struct tdls_txmgmt *ptxmgmt, u8 *pfram...
  function u8 (line 621) | u8 *rtw_tdls_set_bss_coexist(_adapter *padapter, u8 *pframe, struct pkt_...
  function u8 (line 633) | u8 *rtw_tdls_set_payload_type(u8 *pframe, struct pkt_attrib *pattrib)
  function u8 (line 639) | u8 *rtw_tdls_set_category(u8 *pframe, struct pkt_attrib *pattrib, u8 cat...
  function u8 (line 644) | u8 *rtw_tdls_set_action(u8 *pframe, struct pkt_attrib *pattrib, struct t...
  function u8 (line 649) | u8 *rtw_tdls_set_status_code(u8 *pframe, struct pkt_attrib *pattrib, str...
  function u8 (line 654) | u8 *rtw_tdls_set_dialog(u8 *pframe, struct pkt_attrib *pattrib, struct t...
  function u8 (line 663) | u8 *rtw_tdls_set_reg_class(u8 *pframe, struct pkt_attrib *pattrib, struc...
  function u8 (line 669) | u8 *rtw_tdls_set_capability(_adapter *padapter, u8 *pframe, struct pkt_a...
  function u8 (line 680) | u8 *rtw_tdls_set_supported_rate(_adapter *padapter, u8 *pframe, struct p...
  function u8 (line 704) | u8 *rtw_tdls_set_sup_reg_class(u8 *pframe, struct pkt_attrib *pattrib)
  function u8 (line 709) | u8 *rtw_tdls_set_linkid(u8 *pframe, struct pkt_attrib *pattrib, u8 init)
  function u8 (line 725) | u8 *rtw_tdls_set_target_ch(_adapter *padapter, u8 *pframe, struct pkt_at...
  function u8 (line 734) | u8 *rtw_tdls_set_ch_sw(u8 *pframe, struct pkt_attrib *pattrib, struct st...
  function u8 (line 749) | u8 *rtw_tdls_set_wmm_params(_adapter *padapter, u8 *pframe, struct pkt_a...
  function rtw_tdls_process_wfd_ie (line 769) | void rtw_tdls_process_wfd_ie(struct tdls_info *ptdlsinfo, u8 *ptr, u8 le...
  function issue_tunneled_probe_req (line 803) | int issue_tunneled_probe_req(_adapter *padapter)
  function issue_tunneled_probe_rsp (line 845) | int issue_tunneled_probe_rsp(_adapter *padapter, union recv_frame *precv...
  function issue_tdls_setup_req (line 887) | int issue_tdls_setup_req(_adapter *padapter, struct tdls_txmgmt *ptxmgmt...
  function _issue_tdls_teardown (line 966) | int _issue_tdls_teardown(_adapter *padapter, struct tdls_txmgmt *ptxmgmt...
  function issue_tdls_teardown (line 1035) | int issue_tdls_teardown(_adapter *padapter, struct tdls_txmgmt *ptxmgmt,...
  function issue_tdls_dis_req (line 1049) | int issue_tdls_dis_req(_adapter *padapter, struct tdls_txmgmt *ptxmgmt)
  function issue_tdls_setup_rsp (line 1088) | int issue_tdls_setup_rsp(_adapter *padapter, struct tdls_txmgmt *ptxmgmt)
  function issue_tdls_setup_cfm (line 1127) | int issue_tdls_setup_cfm(_adapter *padapter, struct tdls_txmgmt *ptxmgmt)
  function issue_tdls_dis_rsp (line 1168) | int issue_tdls_dis_rsp(_adapter *padapter, struct tdls_txmgmt *ptxmgmt, ...
  function issue_tdls_peer_traffic_rsp (line 1222) | int issue_tdls_peer_traffic_rsp(_adapter *padapter, struct sta_info *ptd...
  function issue_tdls_peer_traffic_indication (line 1264) | int issue_tdls_peer_traffic_indication(_adapter *padapter, struct sta_in...
  function issue_tdls_ch_switch_req (line 1310) | int issue_tdls_ch_switch_req(_adapter *padapter, struct sta_info *ptdls_...
  function issue_tdls_ch_switch_rsp (line 1357) | int issue_tdls_ch_switch_rsp(_adapter *padapter, struct tdls_txmgmt *ptx...
  function On_TDLS_Dis_Rsp (line 1414) | int On_TDLS_Dis_Rsp(_adapter *padapter, union recv_frame *precv_frame)
  function sint (line 1481) | sint On_TDLS_Setup_Req(_adapter *padapter, union recv_frame *precv_frame)
  function On_TDLS_Setup_Rsp (line 1695) | int On_TDLS_Setup_Rsp(_adapter *padapter, union recv_frame *precv_frame)
  function On_TDLS_Setup_Cfm (line 1889) | int On_TDLS_Setup_Cfm(_adapter *padapter, union recv_frame *precv_frame)
  function On_TDLS_Dis_Req (line 2012) | int On_TDLS_Dis_Req(_adapter *padapter, union recv_frame *precv_frame)
  function On_TDLS_Teardown (line 2071) | int On_TDLS_Teardown(_adapter *padapter, union recv_frame *precv_frame)
  function u8 (line 2099) | u8 TDLS_check_ch_state(uint state){
  function On_TDLS_Peer_Traffic_Indication (line 2111) | int On_TDLS_Peer_Traffic_Indication(_adapter *padapter, union recv_frame...
  function On_TDLS_Peer_Traffic_Rsp (line 2134) | int On_TDLS_Peer_Traffic_Rsp(_adapter *padapter, union recv_frame *precv...
  function sint (line 2202) | sint On_TDLS_Ch_Switch_Req(_adapter *padapter, union recv_frame *precv_f...
  function sint (line 2285) | sint On_TDLS_Ch_Switch_Rsp(_adapter *padapter, union recv_frame *precv_f...
  function wfd_ie_tdls (line 2373) | void wfd_ie_tdls(_adapter * padapter, u8 *pframe, u32 *pktlen )
  function rtw_build_tdls_setup_req_ies (line 2460) | void rtw_build_tdls_setup_req_ies(_adapter * padapter, struct xmit_frame...
  function rtw_build_tdls_setup_rsp_ies (line 2532) | void rtw_build_tdls_setup_rsp_ies(_adapter * padapter, struct xmit_frame...
  function rtw_build_tdls_setup_cfm_ies (line 2628) | void rtw_build_tdls_setup_cfm_ies(_adapter * padapter, struct xmit_frame...
  function rtw_build_tdls_teardown_ies (line 2694) | void rtw_build_tdls_teardown_ies(_adapter * padapter, struct xmit_frame ...
  function rtw_build_tdls_dis_req_ies (line 2725) | void rtw_build_tdls_dis_req_ies(_adapter * padapter, struct xmit_frame *...
  function rtw_build_tdls_dis_rsp_ies (line 2737) | void rtw_build_tdls_dis_rsp_ies(_adapter * padapter, struct xmit_frame *...
  function rtw_build_tdls_peer_traffic_indication_ies (line 2777) | void rtw_build_tdls_peer_traffic_indication_ies(_adapter * padapter, str...
  function rtw_build_tdls_peer_traffic_rsp_ies (line 2808) | void rtw_build_tdls_peer_traffic_rsp_ies(_adapter * padapter, struct xmi...
  function rtw_build_tdls_ch_switch_req_ies (line 2826) | void rtw_build_tdls_ch_switch_req_ies(_adapter * padapter, struct xmit_f...
  function rtw_build_tdls_ch_switch_rsp_ies (line 2852) | void rtw_build_tdls_ch_switch_rsp_ies(_adapter * padapter, struct xmit_f...
  function rtw_build_tunneled_probe_req_ies (line 2874) | void rtw_build_tunneled_probe_req_ies(_adapter * padapter, struct xmit_f...
  function rtw_build_tunneled_probe_rsp_ies (line 2902) | void rtw_build_tunneled_probe_rsp_ies(_adapter * padapter, struct xmit_f...
  function _tdls_tpk_timer_hdl (line 2931) | void _tdls_tpk_timer_hdl(void *FunctionContext)
  function _tdls_ch_switch_timer_hdl (line 2951) | void _tdls_ch_switch_timer_hdl(void *FunctionContext)
  function _tdls_delay_timer_hdl (line 2993) | void _tdls_delay_timer_hdl(void *FunctionContext)
  function _tdls_handshake_timer_hdl (line 3004) | void _tdls_handshake_timer_hdl(void *FunctionContext)
  function _tdls_pti_timer_hdl (line 3027) | void _tdls_pti_timer_hdl(void *FunctionContext)
  function rtw_init_tdls_timer (line 3046) | void rtw_init_tdls_timer(_adapter *padapter, struct sta_info *psta)
  function rtw_free_tdls_timer (line 3058) | void rtw_free_tdls_timer(struct sta_info *psta)
  function u8 (line 3069) | u8	update_sgi_tdls(_adapter *padapter, struct sta_info *psta)
  function u32 (line 3074) | u32 update_mask_tdls(_adapter *padapter, struct sta_info *psta)
  function rtw_tdls_is_driver_setup (line 3105) | int rtw_tdls_is_driver_setup(_adapter *padapter)
  type TDLS_ACTION_FIELD (line 3110) | enum TDLS_ACTION_FIELD

FILE: core/rtw_vht.c
  function u8 (line 47) | u8	rtw_get_vht_highest_rate(u8 *pvht_mcs_map)
  function u8 (line 71) | u8	rtw_vht_mcsmap_to_nss(u8 *pvht_mcs_map)
  function rtw_vht_nss_to_mcsmap (line 95) | void	rtw_vht_nss_to_mcsmap(u8 nss, u8 *target_mcs_map, u8 *cur_mcs_map)
  function u16 (line 120) | u16	rtw_vht_mcs_to_data_rate(u8 bw, u8 short_GI, u8 vht_mcs_rate)
  function rtw_vht_use_default_setting (line 128) | void	rtw_vht_use_default_setting(_adapter *padapter)
  function u64 (line 248) | u64	rtw_vht_rate_to_bitmap(u8 *pVHTRate)
  function update_sta_vht_info_apmode (line 280) | void	update_sta_vht_info_apmode(_adapter *padapter, PVOID sta)
  function update_hw_vht_param (line 364) | void	update_hw_vht_param(_adapter *padapter)
  function VHT_caps_handler (line 378) | void VHT_caps_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE)
  function VHT_operation_handler (line 459) | void VHT_operation_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs...
  function rtw_process_vht_op_mode_notify (line 469) | void rtw_process_vht_op_mode_notify(_adapter *padapter, u8 *pframe, PVOI...
  function u32 (line 511) | u32	rtw_build_vht_operation_ie(_adapter *padapter, u8 *pbuf, u8 channel)
  function u32 (line 577) | u32	rtw_build_vht_op_mode_notify_ie(_adapter *padapter, u8 *pbuf, u8 bw)
  function u32 (line 607) | u32	rtw_build_vht_cap_ie(_adapter *padapter, u8 *pbuf)
  function u32 (line 715) | u32 rtw_restructure_vht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, ui...
  function VHTOnAssocRsp (line 776) | void VHTOnAssocRsp(_adapter *padapter)

FILE: core/rtw_wapi.c
  function WapiFreeAllStaInfo (line 16) | void WapiFreeAllStaInfo(_adapter *padapter)
  function WapiSetIE (line 45) | void WapiSetIE(_adapter *padapter)
  function u32 (line 102) | u32 WapiComparePN(u8 *PN1, u8 *PN2)
  function u8 (line 126) | u8
  function u8 (line 184) | u8 WapiGetEntryForCamClear(_adapter *padapter,u8 *pPeerMac,u8 keyid,u8 I...
  function WapiResetAllCamEntry (line 235) | void
  function u8 (line 258) | u8 WapiWriteOneCamEntry(
  function rtw_wapi_init (line 295) | void rtw_wapi_init(_adapter *padapter)
  function rtw_wapi_free (line 338) | void rtw_wapi_free(_adapter *padapter)
  function rtw_wapi_disable_tx (line 354) | void rtw_wapi_disable_tx(_adapter *padapter)
  function u8 (line 371) | u8 rtw_wapi_is_wai_packet(_adapter* padapter,u8 *pkt_data)
  function rtw_wapi_update_info (line 431) | void rtw_wapi_update_info(_adapter *padapter, union recv_frame *precv_fr...
  function u8 (line 473) | u8 rtw_wapi_check_for_drop(
  function rtw_build_probe_resp_wapi_ie (line 596) | void rtw_build_probe_resp_wapi_ie(_adapter *padapter, unsigned char *pfr...
  function rtw_build_beacon_wapi_ie (line 620) | void rtw_build_beacon_wapi_ie(_adapter *padapter, unsigned char *pframe,...
  function rtw_build_assoc_req_wapi_ie (line 643) | void rtw_build_assoc_req_wapi_ie(_adapter *padapter, unsigned char *pfra...
  function rtw_wapi_on_assoc_ok (line 679) | void rtw_wapi_on_assoc_ok(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs ...
  function rtw_wapi_return_one_sta_info (line 712) | void rtw_wapi_return_one_sta_info(_adapter *padapter, u8 *MacAddr)
  function rtw_wapi_return_all_sta_info (line 809) | void rtw_wapi_return_all_sta_info(_adapter *padapter)
  function rtw_wapi_clear_cam_entry (line 845) | void rtw_wapi_clear_cam_entry(_adapter *padapter, u8 *pMacAddr)
  function rtw_wapi_clear_all_cam_entry (line 884) | void rtw_wapi_clear_all_cam_entry(_adapter *padapter)
  function rtw_wapi_set_key (line 900) | void rtw_wapi_set_key(_adapter *padapter, RT_WAPI_KEY *pWapiKey, RT_WAPI...
  function wapi_test_set_key (line 963) | void wapi_test_set_key(struct _adapter *padapter, u8* buf)
  function wapi_test_init (line 1126) | void wapi_test_init(struct _adapter *padapter)
  function rtw_wapi_get_iv (line 1200) | void rtw_wapi_get_iv(_adapter *padapter,u8 *pRA, u8*IV)
  function rtw_wapi_drop_for_key_absent (line 1266) | bool rtw_wapi_drop_for_key_absent(_adapter *padapter,u8 *pRA)

FILE: core/rtw_wapi_sms4.c
  function xor_block (line 58) | static void
  function SMS4Crypt (line 69) | void SMS4Crypt(u8 *Input, u8 *Output, u32 *rk)
  function SMS4KeyExt (line 113) | void SMS4KeyExt(u8 *Key, u32 *rk, u32 CryptFlag)
  function WapiSMS4Cryption (line 156) | void WapiSMS4Cryption(u8 *Key, u8 *IV, u8 *Input, u16 InputLength,
  function WapiSMS4Encryption (line 197) | void WapiSMS4Encryption(u8 *Key, u8 *IV, u8 *Input, u16 InputLength,
  function WapiSMS4Decryption (line 204) | void WapiSMS4Decryption(u8 *Key, u8 *IV, u8 *Input, u16 InputLength,
  function WapiSMS4CalculateMic (line 211) | void WapiSMS4CalculateMic(u8 *Key, u8 *IV, u8 *Input1, u8 Input1Length,
  function SecCalculateMicSMS4 (line 263) | void SecCalculateMicSMS4(
  function u8 (line 338) | u8 WapiIncreasePN(u8 *PN, u8 AddCount)
  function WapiGetLastRxUnicastPNForQoSData (line 376) | void WapiGetLastRxUnicastPNForQoSData(
  function WapiSetLastRxUnicastPNForQoSData (line 409) | void WapiSetLastRxUnicastPNForQoSData(
  function u8 (line 447) | u8 WapiCheckPnInSwDecrypt(
  function SecSMS4HeaderFillIV (line 482) | int SecSMS4HeaderFillIV(_adapter *padapter, u8 *pxmitframe)
  function SecSWSMS4Encryption (line 578) | void SecSWSMS4Encryption(
  function u8 (line 659) | u8 SecSWSMS4Decryption(
  function u32 (line 850) | u32	rtw_sms4_encrypt(_adapter *padapter, u8 *pxmitframe)
  function u32 (line 875) | u32	rtw_sms4_decrypt(_adapter *padapter, u8 *precvframe)
  function u32 (line 907) | u32	rtw_sms4_encrypt(_adapter *padapter, u8 *pxmitframe)
  function u32 (line 914) | u32	rtw_sms4_decrypt(_adapter *padapter, u8 *precvframe)

FILE: core/rtw_wlan_util.c
  function cckrates_included (line 76) | int cckrates_included(unsigned char *rate, int ratelen)
  function cckratesonly_included (line 91) | int cckratesonly_included(unsigned char *rate, int ratelen)
  function s8 (line 105) | s8 rtw_get_tx_nss(_adapter *adapter, struct sta_info *psta)
  function u8 (line 182) | u8 networktype_to_raid(_adapter *adapter,struct sta_info *psta)
  function u8 (line 217) | u8 networktype_to_raid_ex(_adapter *adapter, struct sta_info *psta)
  function u8 (line 320) | u8 judge_network_type(_adapter *padapter, unsigned char *rate, int ratelen)
  function ratetbl_val_2wifirate (line 361) | unsigned char ratetbl_val_2wifirate(unsigned char rate)
  function is_basicrate (line 422) | int is_basicrate(_adapter *padapter, unsigned char rate)
  function ratetbl2rateset (line 445) | unsigned int ratetbl2rateset(_adapter *padapter, unsigned char *rateset)
  function get_rate_set (line 480) | void get_rate_set(_adapter *padapter, unsigned char *pbssrate, int *bssr...
  function set_mcs_rate_by_mask (line 489) | void set_mcs_rate_by_mask(u8 *mcs_set, u32 mask)
  function UpdateBrateTbl (line 502) | void UpdateBrateTbl(
  function UpdateBrateTblForSoftAP (line 530) | void UpdateBrateTblForSoftAP(u8 *bssrateset, u32 bssratelen)
  function Set_NETYPE1_MSR (line 550) | static void Set_NETYPE1_MSR(_adapter *padapter, u8 type)
  function Set_NETYPE0_MSR (line 555) | static void Set_NETYPE0_MSR(_adapter *padapter, u8 type)
  function Set_MSR (line 560) | void Set_MSR(_adapter *padapter, u8 type)
  function u8 (line 574) | inline u8 rtw_get_oper_ch(_adapter *adapter)
  function rtw_set_oper_ch (line 579) | inline void rtw_set_oper_ch(_adapter *adapter, u8 ch)
  function u8 (line 616) | inline u8 rtw_get_oper_bw(_adapter *adapter)
  function rtw_set_oper_bw (line 621) | inline void rtw_set_oper_bw(_adapter *adapter, u8 bw)
  function u8 (line 626) | inline u8 rtw_get_oper_choffset(_adapter *adapter)
  function rtw_set_oper_choffset (line 631) | inline void rtw_set_oper_choffset(_adapter *adapter, u8 offset)
  function u8 (line 636) | u8 rtw_get_offset_by_ch(u8 channel)
  function u8 (line 689) | u8	rtw_get_center_ch(u8 channel, u8 chnl_bw, u8 chnl_offset)
  function u32 (line 721) | inline u32 rtw_get_on_oper_ch_time(_adapter *adapter)
  function u32 (line 726) | inline u32 rtw_get_on_cur_ch_time(_adapter *adapter)
  type mlme_ext_priv (line 736) | struct mlme_ext_priv
  type rf_ctl_t (line 742) | struct rf_ctl_t
  type mlme_ext_priv (line 778) | struct mlme_ext_priv
  type rf_ctl_t (line 784) | struct rf_ctl_t
  type mlme_ext_priv (line 821) | struct mlme_ext_priv
  type rf_ctl_t (line 843) | struct rf_ctl_t
  function get_bsstype (line 878) | int get_bsstype(unsigned short capability)
  function u8 (line 894) | __inline u8 *get_my_bssid(WLAN_BSSID_EX *pnetwork)
  function u16 (line 899) | u16 get_beacon_interval(WLAN_BSSID_EX *bss)
  function is_client_associated_to_ap (line 908) | int is_client_associated_to_ap(_adapter *padapter)
  function is_client_associated_to_ibss (line 929) | int is_client_associated_to_ibss(_adapter *padapter)
  function is_IBSS_empty (line 944) | int is_IBSS_empty(_adapter *padapter)
  function decide_wait_for_beacon_timeout (line 962) | unsigned int decide_wait_for_beacon_timeout(unsigned int bcn_interval)
  function CAM_empty_entry (line 978) | void CAM_empty_entry(
  function invalidate_cam_all (line 986) | void invalidate_cam_all(_adapter *padapter)
  function _clear_cam_entry (line 1001) | void _clear_cam_entry(_adapter *padapter, u8 entry)
  function write_cam (line 1009) | inline void write_cam(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key)
  function clear_cam_entry (line 1019) | inline void clear_cam_entry(_adapter *adapter, u8 id)
  function write_cam_from_cache (line 1025) | inline void write_cam_from_cache(_adapter *adapter, u8 id)
  function write_cam_cache (line 1039) | void write_cam_cache(_adapter *adapter, u8 id, u16 ctrl, u8 *mac, u8 *key)
  function clear_cam_cache (line 1054) | void clear_cam_cache(_adapter *adapter, u8 id)
  function s16 (line 1067) | s16 rtw_get_camid(_adapter *adapter, struct sta_info *sta, s16 kid)
  function _rtw_camctl_chk_cap (line 1110) | inline bool _rtw_camctl_chk_cap(_adapter *adapter, u8 cap)
  function _rtw_camctl_set_flags (line 1120) | inline void _rtw_camctl_set_flags(_adapter *adapter, u32 flags)
  function rtw_camctl_set_flags (line 1128) | inline void rtw_camctl_set_flags(_adapter *adapter, u32 flags)
  function _rtw_camctl_clr_flags (line 1139) | inline void _rtw_camctl_clr_flags(_adapter *adapter, u32 flags)
  function rtw_camctl_clr_flags (line 1147) | inline void rtw_camctl_clr_flags(_adapter *adapter, u32 flags)
  function _rtw_camctl_chk_flags (line 1158) | inline bool _rtw_camctl_chk_flags(_adapter *adapter, u32 flags)
  function dump_sec_cam_map (line 1168) | void dump_sec_cam_map(void *sel, struct sec_cam_bmp *map, u8 max_num)
  function rtw_sec_camid_is_set (line 1185) | inline bool rtw_sec_camid_is_set(struct sec_cam_bmp *map, u8 id)
  type sec_cam_bmp (line 1207) | struct sec_cam_bmp
  type sec_cam_bmp (line 1227) | struct sec_cam_bmp
  function else (line 1240) | else if (id < 128)
  function rtw_sec_camid_is_drv_forbid (line 1261) | inline bool rtw_sec_camid_is_drv_forbid(struct cam_ctl_t *cam_ctl, u8 id)
  function _rtw_sec_camid_is_used (line 1296) | bool _rtw_sec_camid_is_used(struct cam_ctl_t *cam_ctl, u8 id)
  function rtw_sec_camid_is_used (line 1318) | inline bool rtw_sec_camid_is_used(struct cam_ctl_t *cam_ctl, u8 id)
  function _rtw_camid_is_gk (line 1330) | inline bool _rtw_camid_is_gk(_adapter *adapter, u8 cam_id)
  function rtw_camid_is_gk (line 1350) | inline bool rtw_camid_is_gk(_adapter *adapter, u8 cam_id)
  function cam_cache_chk (line 1364) | bool cam_cache_chk(_adapter *adapter, u8 id, u8 *addr, s16 kid, s8 gk)
  function s16 (line 1382) | s16 _rtw_camid_search(_adapter *adapter, u8 *addr, s16 kid, s8 gk)
  function s16 (line 1408) | s16 rtw_camid_search(_adapter *adapter, u8 *addr, s16 kid, s8 gk)
  function s16 (line 1422) | s16 rtw_camid_alloc(_adapter *adapter, struct sta_info *sta, u8 kid, boo...
  function rtw_camid_free (line 1516) | void rtw_camid_free(_adapter *adapter, u8 cam_id)
  function allocate_fw_sta_entry (line 1530) | int allocate_fw_sta_entry(_adapter *padapter)
  function flush_all_cam_entry (line 1549) | void flush_all_cam_entry(_adapter *padapter)
  function WFD_info_handler (line 1609) | int WFD_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs	pIE)
  function WMM_param_handler (line 1644) | int WMM_param_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs	pIE)
  function WMMOnAssocRsp (line 1690) | void WMMOnAssocRsp(_adapter *padapter)
  function bwmode_update_check (line 1838) | static void bwmode_update_check(_adapter *padapter, PNDIS_802_11_VARIABL...
  function HT_caps_handler (line 1951) | void HT_caps_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE)
  function HT_info_handler (line 2119) | void HT_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE)
  function HTOnAssocRsp (line 2141) | void HTOnAssocRsp(_adapter *padapter)
  function ERP_IE_handler (line 2227) | void ERP_IE_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE)
  function VCS_update (line 2239) | void VCS_update(_adapter *padapter, struct sta_info *psta)
  function update_ldpc_stbc_cap (line 2286) | void	update_ldpc_stbc_cap(struct sta_info *psta)
  function rtw_get_bcn_keys (line 2324) | int rtw_get_bcn_keys(ADAPTER *Adapter, u8 *pframe, u32 packet_len,
  function rtw_dump_bcn_keys (line 2405) | void rtw_dump_bcn_keys(struct beacon_keys *recv_beacon)
  function rtw_check_bcn_info (line 2423) | int rtw_check_bcn_info(ADAPTER *Adapter, u8 *pframe, u32 packet_len)
  function update_beacon_info (line 2739) | void update_beacon_info(_adapter *padapter, u8 *pframe, uint pkt_len, st...
  function process_csa_ie (line 2798) | void process_csa_ie(_adapter *padapter, u8 *pframe, uint pkt_len)
  function is_ap_in_tkip (line 2830) | unsigned int is_ap_in_tkip(_adapter *padapter)
  function should_forbid_n_rate (line 2875) | unsigned int should_forbid_n_rate(_adapter * padapter)
  function is_ap_in_wep (line 2919) | unsigned int is_ap_in_wep(_adapter *padapter)
  function wifirate2_ratetbl_inx (line 2960) | int wifirate2_ratetbl_inx(unsigned char rate)
  function update_basic_rate (line 3018) | unsigned int update_basic_rate(unsigned char *ptn, unsigned int ptn_sz)
  function update_supported_rate (line 3035) | unsigned int update_supported_rate(unsigned char *ptn, unsigned int ptn_sz)
  function update_MCS_rate (line 3050) | unsigned int update_MCS_rate(struct HT_caps_element *pHT_caps)
  function support_short_GI (line 3059) | int support_short_GI(_adapter *padapter, struct HT_caps_element *pHT_cap...
  function get_highest_rate_idx (line 3080) | unsigned char get_highest_rate_idx(u32 mask)
  type HT_caps_element (line 3097) | struct HT_caps_element
  function get_highest_mcs_rate (line 3098) | unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps)
  function Update_RA_Entry (line 3115) | void Update_RA_Entry(_adapter *padapter, struct sta_info *psta)
  type sta_info (line 3120) | struct sta_info
  function enable_rate_adaptive (line 3121) | void enable_rate_adaptive(_adapter *padapter, struct sta_info *psta)
  function set_sta_rate (line 3126) | void set_sta_rate(_adapter *padapter, struct sta_info *psta)
  function update_tx_basic_rate (line 3133) | void update_tx_basic_rate(_adapter *padapter, u8 wirelessmode)
  function check_assoc_AP (line 3173) | unsigned char check_assoc_AP(u8 *pframe, uint len)
  function update_capinfo (line 3269) | void update_capinfo(PADAPTER Adapter, u16 updateCap)
  function update_wireless_mode (line 3339) | void update_wireless_mode(_adapter *padapter)
  function fire_write_MAC_cmd (line 3413) | void fire_write_MAC_cmd(_adapter *padapter, unsigned int addr, unsigned ...
  function update_sta_basic_rate (line 3440) | void update_sta_basic_rate(struct sta_info *psta, u8 wireless_mode)
  function update_sta_support_rate (line 3455) | int update_sta_support_rate(_adapter *padapter, u8* pvar_ie, uint var_ie...
  function process_addba_req (line 3482) | void process_addba_req(_adapter *padapter, u8 *paddba_req, u8 *addr)
  function update_TSF (line 3528) | void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
  function correct_TSF (line 3543) | void correct_TSF(_adapter *padapter, struct mlme_ext_priv *pmlmeext)
  function adaptive_early_32k (line 3548) | void adaptive_early_32k(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint...
  function beacon_timing_control (line 3646) | void beacon_timing_control(_adapter *padapter)
  function dump_macid_map (line 3653) | void dump_macid_map(void *sel, struct macid_bmp *map, u8 max_num)
  function rtw_macid_is_set (line 3670) | inline bool rtw_macid_is_set(struct macid_bmp *map, u8 id)
  type macid_bmp (line 3692) | struct macid_bmp
  type macid_bmp (line 3712) | struct macid_bmp
  function else (line 3725) | else if (id < 128)
  function rtw_macid_is_bmc (line 3737) | inline bool rtw_macid_is_bmc(struct macid_ctl_t *macid_ctl, u8 id)
  function s8 (line 3742) | inline s8 rtw_macid_get_if_g(struct macid_ctl_t *macid_ctl, u8 id)
  function s8 (line 3758) | inline s8 rtw_macid_get_ch_g(struct macid_ctl_t *macid_ctl, u8 id)
  function rtw_alloc_macid (line 3769) | void rtw_alloc_macid(_adapter *padapter, struct sta_info *psta)
  function rtw_release_macid (line 3847) | void rtw_release_macid(_adapter *padapter, struct sta_info *psta)
  function u8 (line 3894) | u8 rtw_search_max_mac_id(_adapter *padapter)
  function rtw_macid_ctl_init (line 3913) | inline void rtw_macid_ctl_init(struct macid_ctl_t *macid_ctl)
  function rtw_macid_ctl_deinit (line 3918) | inline void rtw_macid_ctl_deinit(struct macid_ctl_t *macid_ctl)
  function setup_beacon_frame (line 3924) | unsigned int setup_beacon_frame(_adapter *padapter, unsigned char *beaco...
  function _adapter (line 4025) | _adapter *dvobj_get_port0_adapter(struct dvobj_priv *dvobj)
  function rtw_get_current_ip_address (line 4043) | void rtw_get_current_ip_address(PADAPTER padapter, u8 *pcurrentip)
  function rtw_check_pattern_valid (line 4068) | bool rtw_check_pattern_valid(u8 *input, u8 len)
  function rtw_read_from_frame_mask (line 4084) | bool rtw_read_from_frame_mask(_adapter *adapter, u8 idx)
  function rtw_write_to_frame_mask (line 4165) | bool rtw_write_to_frame_mask(_adapter *adapter, u8 idx,
  function rtw_dump_priv_pattern (line 4274) | void rtw_dump_priv_pattern(_adapter *adapter, u8 idx)
  function rtw_clean_pattern (line 4311) | void rtw_clean_pattern(_adapter *adapter)
  function rtw_get_sec_iv (line 4328) | void rtw_get_sec_iv(PADAPTER padapter, u8*pcur_dot11txpn, u8 *StaAddr)
  function rtw_set_sec_pn (line 4353) | void rtw_set_sec_pn(PADAPTER padapter)
  function rtw_parse_ssid_list_tlv (line 4388) | int rtw_parse_ssid_list_tlv(char** list_str, pno_ssid_t* ssid,
  function rtw_parse_cipher_list (line 4457) | int rtw_parse_cipher_list(struct pno_nlo_info *nlo_info, char* list_str) {
  function rtw_dev_nlo_info_set (line 4493) | int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t* ssid,
  function rtw_dev_ssid_list_set (line 4557) | int rtw_dev_ssid_list_set(struct pno_ssid_list *pno_ssid_list,
  function rtw_dev_scan_info_set (line 4572) | int rtw_dev_scan_info_set(_adapter *padapter, pno_ssid_t* ssid,
  function rtw_dev_pno_set (line 4604) | int rtw_dev_pno_set(struct net_device *net, pno_ssid_t* ssid, int num,
  function rtw_dev_pno_debug (line 4674) | void rtw_dev_pno_debug(struct net_device *net) {

FILE: core/rtw_xmit.c
  function _init_txservq (line 32) | static void _init_txservq(struct tx_servq *ptxservq)
  function _rtw_init_sta_xmit_priv (line 42) | void	_rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv)
  function s32 (line 65) | s32	_rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, _adapter *padapter)
  type xmit_priv (line 337) | struct xmit_priv
  function rtw_mfree_xmit_priv_lock (line 338) | void  rtw_mfree_xmit_priv_lock (struct xmit_priv *pxmitpriv)
  function _rtw_free_xmit_priv (line 359) | void _rtw_free_xmit_priv (struct xmit_priv *pxmitpriv)
  function u8 (line 442) | u8	query_ra_short_GI(struct sta_info *psta)
  function update_attrib_vcs_info (line 474) | static void update_attrib_vcs_info(_adapter *padapter, struct xmit_frame...
  function update_attrib_phy_info (line 618) | static void update_attrib_phy_info(_adapter *padapter, struct pkt_attrib...
  function s32 (line 684) | static s32 update_attrib_sec_info(_adapter *padapter, struct pkt_attrib ...
  function u8 (line 849) | u8	qos_acm(u8 acm_mask, u8 priority)
  function set_qos (line 881) | static void set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib)
  function u8 (line 910) | u8 rtw_check_tdls_established(_adapter *padapter, struct pkt_attrib *pat...
  function s32 (line 943) | s32 update_tdls_attrib(_adapter *padapter, struct pkt_attrib *pattrib)
  function u8 (line 995) | inline u8 rtw_get_hwseq_no(_adapter *padapter)
  function s32 (line 1006) | static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attri...
  function s32 (line 1241) | static s32 xmitframe_addmic(_adapter *padapter, struct xmit_frame *pxmit...
  function s32 (line 1394) | static s32 xmitframe_swencrypt(_adapter *padapter, struct xmit_frame *px...
  function s32 (line 1434) | s32 rtw_make_wlanhdr (_adapter *padapter , u8 *hdr, struct pkt_attrib *p...
  function s32 (line 1632) | s32 rtw_txframes_pending(_adapter *padapter)
  function s32 (line 1642) | s32 rtw_txframes_sta_ac_pending(_adapter *padapter, struct pkt_attrib *p...
  function rtw_build_tdls_ies (line 1704) | int rtw_build_tdls_ies(_adapter * padapter, struct xmit_frame * pxmitfra...
  function s32 (line 1754) | s32 rtw_make_tdls_wlanhdr (_adapter *padapter , u8 *hdr, struct pkt_attr...
  function s32 (line 1868) | s32 rtw_xmit_tdls_coalesce(_adapter * padapter, struct xmit_frame * pxmi...
  function u32 (line 1986) | u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib)
  function s32 (line 2011) | s32 rtw_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xmit_fr...
  function s32 (line 2225) | s32 rtw_mgmt_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xm...
  function s32 (line 2471) | s32 rtw_put_snap(u8 *data, u16 h_proto)
  function rtw_update_protection (line 2499) | void rtw_update_protection(_adapter *padapter, u8 *ie, uint ie_len)
  function rtw_count_tx_stats (line 2548) | void rtw_count_tx_stats(PADAPTER padapter, struct xmit_frame *pxmitframe...
  type xmit_buf (line 2592) | struct xmit_buf
  type xmit_priv (line 2592) | struct xmit_priv
  type cmdbuf_type (line 2593) | enum cmdbuf_type
  type xmit_buf (line 2595) | struct xmit_buf
  type xmit_frame (line 2629) | struct xmit_frame
  type xmit_priv (line 2629) | struct xmit_priv
  type cmdbuf_type (line 2630) | enum cmdbuf_type
  type xmit_frame (line 2632) | struct xmit_frame
  type xmit_buf (line 2633) | struct xmit_buf
  type xmit_buf (line 2659) | struct xmit_buf
  type xmit_priv (line 2659) | struct xmit_priv
  type xmit_buf (line 2662) | struct xmit_buf
  function s32 (line 2717) | s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *p...
  type xmit_buf (line 2746) | struct xmit_buf
  type xmit_priv (line 2746) | struct xmit_priv
  type xmit_buf (line 2749) | struct xmit_buf
  function s32 (line 2812) | s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmit...
  function rtw_init_xmitframe (line 2857) | void rtw_init_xmitframe(struct xmit_frame *pxframe)
  type xmit_frame (line 2906) | struct xmit_frame
  type xmit_priv (line 2906) | struct xmit_priv
  type xmit_frame (line 2915) | struct xmit_frame
  type xmit_frame (line 2947) | struct xmit_frame
  type xmit_priv (line 2947) | struct xmit_priv
  type xmit_frame (line 2950) | struct xmit_frame
  type xmit_frame (line 2980) | struct xmit_frame
  type xmit_priv (line 2980) | struct xmit_priv
  type xmit_frame (line 2982) | struct xmit_frame
  type xmit_frame (line 2985) | struct xmit_frame
  type xmit_frame (line 2990) | struct xmit_frame
  function s32 (line 3009) | s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *p...
  function rtw_free_xmitframe_queue (line 3068) | void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, _queue *pfram...
  function s32 (line 3096) | s32 rtw_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitfr...
  type xmit_frame (line 3110) | struct xmit_frame
  type xmit_priv (line 3110) | struct xmit_priv
  type hw_xmit (line 3110) | struct hw_xmit
  type tx_servq (line 3110) | struct tx_servq
  type xmit_frame (line 3113) | struct	xmit_frame
  type xmit_frame (line 3153) | struct xmit_frame
  type xmit_priv (line 3153) | struct xmit_priv
  type hw_xmit (line 3153) | struct hw_xmit
  type hw_xmit (line 3157) | struct hw_xmit
  type tx_servq (line 3158) | struct tx_servq
  type xmit_frame (line 3160) | struct xmit_frame
  type registry_priv (line 3162) | struct registry_priv
  type tx_servq (line 3241) | struct tx_servq
  type sta_info (line 3241) | struct sta_info
  type tx_servq (line 3243) | struct tx_servq
  type tx_servq (line 3285) | struct tx_servq
  type sta_info (line 3286) | struct sta_info
  type tx_servq (line 3288) | struct tx_servq
  type hw_xmit (line 3289) | struct hw_xmit
  function s32 (line 3352) | s32 rtw_xmit_classifier(_adapter *padapter, struct xmit_frame *pxmitframe)
  function rtw_alloc_hwxmits (line 3424) | void rtw_alloc_hwxmits(_adapter *padapter)
  function rtw_free_hwxmits (line 3494) | void rtw_free_hwxmits(_adapter *padapter)
  function rtw_init_hwxmits (line 3504) | void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry)
  function rtw_br_client_tx (line 3519) | int rtw_br_client_tx(_adapter *padapter, struct sk_buff **pskb)
  function u32 (line 3701) | u32 rtw_get_ff_hwaddr(struct xmit_frame *pxmitframe)
  function do_queue_select (line 3741) | static void do_queue_select(_adapter	*padapter, struct pkt_attrib *pattrib)
  function s32 (line 3764) | s32 rtw_xmit(_adapter *padapter, _pkt **ppkt)
  function sint (line 3869) | sint xmitframe_enqueue_for_tdls_sleeping_sta(_adapter *padapter, struct ...
  function xmitframe_hiq_filter (line 3945) | inline bool xmitframe_hiq_filter(struct xmit_frame *xmitframe)
  function sint (line 3986) | sint xmitframe_enqueue_for_sleeping_sta(_adapter *padapter, struct xmit_...
  function dequeue_xmitframes_to_sleeping_queue (line 4187) | static void dequeue_xmitframes_to_sleeping_queue(_adapter *padapter, str...
  type sta_info (line 4228) | struct sta_info
  type sta_info (line 4231) | struct sta_info
  type sta_xmit_priv (line 4232) | struct sta_xmit_priv
  type sta_priv (line 4233) | struct sta_priv
  type xmit_priv (line 4234) | struct xmit_priv
  function wakeup_sta_to_xmit (line 4287) | void wakeup_sta_to_xmit(_adapter *padapter, struct sta_info *psta)
  function xmit_delivery_enabled_frames (line 4476) | void xmit_delivery_enabled_frames(_adapter *padapter, struct sta_info *p...
  function enqueue_pending_xmitbuf (line 4571) | void enqueue_pending_xmitbuf(
  function enqueue_pending_xmitbuf_to_head (line 4596) | void enqueue_pending_xmitbuf_to_head(
  type xmit_buf (line 4612) | struct xmit_buf
  type xmit_priv (line 4613) | struct xmit_priv
  type xmit_buf (line 4616) | struct xmit_buf
  type xmit_buf (line 4640) | struct xmit_buf
  type xmit_priv (line 4641) | struct xmit_priv
  type xmit_buf (line 4644) | struct xmit_buf
  type xmit_frame (line 4646) | struct xmit_frame
  type xmit_frame (line 4670) | struct xmit_frame
  function sint (line 4699) | sint check_pending_xmitbuf(
  function thread_return (line 4718) | thread_return rtw_xmit_thread(thread_context context)
  function rtw_xmit_ac_blocked (line 4740) | bool rtw_xmit_ac_blocked(_adapter *adapter)
  function rtw_sctx_init (line 4773) | void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms)
  function rtw_sctx_wait (line 4783) | int rtw_sctx_wait(struct submit_ctx *sctx, const char *msg)
  function rtw_sctx_chk_waring_status (line 4807) | bool rtw_sctx_chk_waring_status(int status)
  function rtw_sctx_done_err (line 4822) | void rtw_sctx_done_err(struct submit_ctx **sctx, int status)
  function rtw_sctx_done (line 4835) | void rtw_sctx_done(struct submit_ctx **sctx)
  function rtw_ack_tx_polling (line 4854) | int rtw_ack_tx_polling(struct xmit_priv *pxmitpriv, u32 timeout_ms)
  function rtw_ack_tx_wait (line 4893) | int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms)
  function rtw_ack_tx_done (line 4908) | void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status)

FILE: hal/HalPwrSeqCmd.c
  function u8 (line 48) | u8 HalPwrSeqCmdParsing(

FILE: hal/btc/HalBtc8188c2Ant.c
  function u1Byte (line 31) | u1Byte
  function u1Byte (line 125) | u1Byte
  function VOID (line 199) | VOID
  function VOID (line 229) | VOID
  function VOID (line 252) | VOID
  function VOID (line 291) | VOID
  function VOID (line 325) | VOID
  function VOID (line 349) | VOID
  function VOID (line 370) | VOID
  function VOID (line 392) | VOID
  function VOID (line 413) | VOID
  function VOID (line 440) | VOID
  function VOID (line 466) | VOID
  function VOID (line 484) | VOID
  function VOID (line 505) | VOID
  function VOID (line 549) | VOID
  function VOID (line 570) | VOID
  function VOID (line 588) | VOID
  function VOID (line 617) | VOID
  function VOID (line 631) | VOID
  function VOID (line 639) | VOID
  function VOID (line 792) | VOID
  function VOID (line 862) | VOID
  function VOID (line 931) | VOID
  function VOID (line 946) | VOID
  function VOID (line 980) | VOID
  function VOID (line 1118) | VOID
  function VOID (line 1133) | VOID
  function VOID (line 1179) | VOID
  function VOID (line 1239) | VOID
  function VOID (line 1307) | VOID
  function VOID (line 1358) | VOID
  function VOID (line 1373) | VOID
  function VOID (line 1429) | VOID
  function VOID (line 1527) | VOID
  function VOID (line 1542) | VOID
  function VOID (line 1590) | VOID
  function VOID (line 1668) | VOID
  function VOID (line 1686) | VOID
  function VOID (line 1693) | VOID
  function VOID (line 1717) | VOID
  function VOID (line 1727) | VOID
  function VOID (line 1812) | VOID
  function VOID (line 1830) | VOID
  function VOID (line 1848) | VOID
  function VOID (line 1864) | VOID
  function VOID (line 1880) | VOID
  function VOID (line 1897) | VOID
  function VOID (line 1909) | VOID
  function VOID (line 1918) | VOID
  function VOID (line 1928) | VOID

FILE: hal/btc/HalBtc8188c2Ant.h
  type BT_INFO_SRC_8188C_2ANT (line 6) | typedef enum _BT_INFO_SRC_8188C_2ANT{
  type BT_8188C_2ANT_BT_STATUS (line 13) | typedef enum _BT_8188C_2ANT_BT_STATUS{
  type BT_8188C_2ANT_COEX_ALGO (line 20) | typedef enum _BT_8188C_2ANT_COEX_ALGO{
  type COEX_DM_8188C_2ANT (line 32) | typedef struct _COEX_DM_8188C_2ANT{
  type COEX_STA_8188C_2ANT (line 78) | typedef struct _COEX_STA_8188C_2ANT{

FILE: hal/btc/HalBtc8192d2Ant.c
  function u1Byte (line 31) | u1Byte
  function u1Byte (line 125) | u1Byte
  function VOID (line 202) | VOID
  function VOID (line 232) | VOID
  function VOID (line 255) | VOID
  function VOID (line 295) | VOID
  function VOID (line 329) | VOID
  function VOID (line 354) | VOID
  function VOID (line 375) | VOID
  function VOID (line 397) | VOID
  function VOID (line 418) | VOID
  function VOID (line 445) | VOID
  function VOID (line 471) | VOID
  function VOID (line 489) | VOID
  function VOID (line 510) | VOID
  function VOID (line 629) | VOID
  function VOID (line 650) | VOID
  function VOID (line 668) | VOID
  function VOID (line 697) | VOID
  function VOID (line 711) | VOID
  function VOID (line 718) | VOID
  function VOID (line 762) | VOID
  function VOID (line 908) | VOID
  function VOID (line 1000) | VOID
  function VOID (line 1159) | VOID
  function VOID (line 1220) | VOID
  function VOID (line 1265) | VOID
  function VOID (line 1334) | VOID
  function VOID (line 1390) | VOID
  function VOID (line 1488) | VOID
  function VOID (line 1503) | VOID
  function VOID (line 1551) | VOID
  function VOID (line 1629) | VOID
  function BOOLEAN (line 1644) | BOOLEAN
  function VOID (line 1675) | VOID
  function VOID (line 1682) | VOID
  function VOID (line 1723) | VOID
  function VOID (line 1733) | VOID
  function VOID (line 1818) | VOID
  function VOID (line 1836) | VOID
  function VOID (line 1854) | VOID
  function VOID (line 1870) | VOID
  function VOID (line 1886) | VOID
  function VOID (line 1902) | VOID
  function VOID (line 1914) | VOID
  function VOID (line 1923) | VOID
  function VOID (line 1933) | VOID

FILE: hal/btc/HalBtc8192d2Ant.h
  type BT_INFO_SRC_8192D_2ANT (line 6) | typedef enum _BT_INFO_SRC_8192D_2ANT{
  type BT_8192D_2ANT_BT_STATUS (line 13) | typedef enum _BT_8192D_2ANT_BT_STATUS{
  type BT_8192D_2ANT_COEX_ALGO (line 20) | typedef enum _BT_8192D_2ANT_COEX_ALGO{
  type COEX_DM_8192D_2ANT (line 32) | typedef struct _COEX_DM_8192D_2ANT{
  type COEX_STA_8192D_2ANT (line 99) | typedef struct _COEX_STA_8192D_2ANT{

FILE: hal/btc/HalBtc8192e1Ant.c
  function u1Byte (line 44) | u1Byte
  function u1Byte (line 136) | u1Byte
  function VOID (line 230) | VOID
  function VOID (line 246) | VOID
  function VOID (line 286) | VOID
  function VOID (line 313) | VOID
  function VOID (line 340) | VOID
  function VOID (line 370) | VOID
  function VOID (line 397) | VOID
  function VOID (line 414) | VOID
  function VOID (line 474) | VOID
  function BOOLEAN (line 571) | BOOLEAN
  function VOID (line 607) | VOID
  function u1Byte (line 667) | u1Byte
  function VOID (line 877) | VOID
  function VOID (line 898) | VOID
  function VOID (line 919) | VOID
  function VOID (line 944) | VOID
  function VOID (line 963) | VOID
  function VOID (line 985) | VOID
  function VOID (line 1018) | VOID
  function VOID (line 1060) | VOID
  function VOID (line 1079) | VOID
  function VOID (line 1100) | VOID
  function VOID (line 1114) | VOID
  function VOID (line 1143) | VOID
  function VOID (line 1152) | VOID
  function VOID (line 1207) | VOID
  function VOID (line 1256) | VOID
  function VOID (line 1462) | VOID
  function BOOLEAN (line 1474) | BOOLEAN
  function VOID (line 1547) | VOID
  function VOID (line 1750) | VOID
  function VOID (line 1786) | VOID
  function VOID (line 1825) | VOID
  function VOID (line 1834) | VOID
  function VOID (line 1997) | VOID
  function VOID (line 2008) | VOID
  function VOID (line 2017) | VOID
  function VOID (line 2061) | VOID
Copy disabled (too large) Download .json
Condensed preview — 429 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (12,851K chars).
[
  {
    "path": ".gitignore",
    "chars": 485,
    "preview": "#\n# NOTE! Don't add files that are generated in specific\n# subdirectories here. Add them in the \".gitignore\" file\n# in t"
  },
  {
    "path": "Kconfig",
    "chars": 110,
    "preview": "config RTL8814AU\n\ttristate \"Realtek 8814A USB WiFi\"\n\tdepends on USB\n\t---help---\n\t  Help message of RTL8814AU\n\n"
  },
  {
    "path": "LICENSE",
    "chars": 18207,
    "preview": "# SPDX-Full-Name: GNU General Public License v2.0 only\n# SPDX-License-Identifier: GPL-2.0\n# SPDX-License-URL: https://sp"
  },
  {
    "path": "Makefile",
    "chars": 53572,
    "preview": "EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS)\nEXTRA_CFLAGS += -O1\n#EXTRA_CFLAGS += -O3\n#EXTRA_CFLAGS += -Wall\n#EXTRA_CFLAGS += -W"
  },
  {
    "path": "README.md",
    "chars": 488,
    "preview": "# rtl8814AU\nRealtek 8814AU USB WiFi driver.\n\nForked from [Diederik de Haas](https://github.com/diederikdehaas/rtl8814AU)"
  },
  {
    "path": "clean",
    "chars": 64,
    "preview": "#!/bin/bash\nrmmod 8192cu\nrmmod 8192ce\nrmmod 8192du\nrmmod 8192de\n"
  },
  {
    "path": "core/efuse/rtw_efuse.c",
    "chars": 41139,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_ap.c",
    "chars": 115655,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_beamforming.c",
    "chars": 34755,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_br_ext.c",
    "chars": 46551,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_bt_mp.c",
    "chars": 51331,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_btcoex.c",
    "chars": 47020,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2013 Realtek Corporat"
  },
  {
    "path": "core/rtw_cmd.c",
    "chars": 108012,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_debug.c",
    "chars": 109953,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_eeprom.c",
    "chars": 10235,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_ieee80211.c",
    "chars": 64057,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_io.c",
    "chars": 20425,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_ioctl_query.c",
    "chars": 6997,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_ioctl_rtl.c",
    "chars": 30419,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_ioctl_set.c",
    "chars": 45148,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_iol.c",
    "chars": 10952,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_mem.c",
    "chars": 2772,
    "preview": "\n#include <drv_types.h>\n#include <rtw_mem.h>\n\nMODULE_LICENSE(\"GPL\");\nMODULE_DESCRIPTION(\"Realtek Wireless Lan Driver\");\n"
  },
  {
    "path": "core/rtw_mlme.c",
    "chars": 131884,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_mlme_ext.c",
    "chars": 445830,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_mp.c",
    "chars": 104237,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_mp_ioctl.c",
    "chars": 90319,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_odm.c",
    "chars": 13103,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2013 Realtek Corporat"
  },
  {
    "path": "core/rtw_p2p.c",
    "chars": 155137,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_pwrctrl.c",
    "chars": 68655,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_recv.c",
    "chars": 138436,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_rf.c",
    "chars": 12092,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_security.c",
    "chars": 99115,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_sreset.c",
    "chars": 10425,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_sta_mgt.c",
    "chars": 22182,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_tdls.c",
    "chars": 97754,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_vht.c",
    "chars": 25585,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "core/rtw_wapi.c",
    "chars": 38817,
    "preview": "#ifdef CONFIG_WAPI_SUPPORT\n\n#include <linux/unistd.h>\n#include <linux/etherdevice.h>\n#include <drv_types.h>\n#include <rt"
  },
  {
    "path": "core/rtw_wapi_sms4.c",
    "chars": 26982,
    "preview": "#ifdef CONFIG_WAPI_SUPPORT\n\n#include <linux/unistd.h>\n#include <linux/etherdevice.h>\n#include <drv_types.h>\n#include <rt"
  },
  {
    "path": "core/rtw_wlan_util.c",
    "chars": 122744,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "core/rtw_xmit.c",
    "chars": 124663,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "dkms.conf",
    "chars": 225,
    "preview": "MAKE=\"'make' all KVER=${kernelver}\"\nCLEAN=\"'make' clean\"\nBUILT_MODULE_NAME=\"8814au\"\nBUILT_MODULE_LOCATION=.\nPACKAGE_NAME"
  },
  {
    "path": "hal/HalPwrSeqCmd.c",
    "chars": 5693,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/btc/HalBtc8188c2Ant.c",
    "chars": 55711,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 92CE/92CU BT 1 Ant"
  },
  {
    "path": "hal/btc/HalBtc8188c2Ant.h",
    "chars": 3662,
    "preview": "//===========================================\n// The following is for 8188C 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8192d2Ant.c",
    "chars": 57354,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 92D BT 2 Antenna C"
  },
  {
    "path": "hal/btc/HalBtc8192d2Ant.h",
    "chars": 4082,
    "preview": "//===========================================\n// The following is for 8192D 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8192e1Ant.c",
    "chars": 102155,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8192E Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8192e1Ant.h",
    "chars": 6656,
    "preview": "//===========================================\n// The following is for 8192E 1ANT BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8192e2Ant.c",
    "chars": 152416,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8192E Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8192e2Ant.h",
    "chars": 5980,
    "preview": "//===========================================\n// The following is for 8192E 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8703b1Ant.c",
    "chars": 139338,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8703B Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8703b1Ant.h",
    "chars": 9556,
    "preview": "//===========================================\n// The following is for 8703B 1ANT BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8703b2Ant.c",
    "chars": 139895,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8703B Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8703b2Ant.h",
    "chars": 5854,
    "preview": "//===========================================\n// The following is for 8703B 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8723a1Ant.c",
    "chars": 42450,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8723A Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8723a1Ant.h",
    "chars": 4687,
    "preview": "//===========================================\n// The following is for 8723A 1Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8723a2Ant.c",
    "chars": 103964,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8723A Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8723a2Ant.h",
    "chars": 4845,
    "preview": "//===========================================\n// The following is for 8723A 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8723b1Ant.c",
    "chars": 161834,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8723B Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8723b1Ant.h",
    "chars": 9077,
    "preview": "//===========================================\n// The following is for 8723B 1ANT BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8723b2Ant.c",
    "chars": 141975,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8723B Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8723b2Ant.h",
    "chars": 5993,
    "preview": "//===========================================\n// The following is for 8723B 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8812a1Ant.c",
    "chars": 101918,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8812A Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8812a1Ant.h",
    "chars": 6747,
    "preview": "//===========================================\n// The following is for 8812A 1ANT BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8812a2Ant.c",
    "chars": 159489,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8812A Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8812a2Ant.h",
    "chars": 6397,
    "preview": "//===========================================\n// The following is for 8812A 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8821a1Ant.c",
    "chars": 94624,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 8821A_1ANT Co-exis"
  },
  {
    "path": "hal/btc/HalBtc8821a1Ant.h",
    "chars": 5837,
    "preview": "//===========================================\n// The following is for 8821A 1ANT BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8821a2Ant.c",
    "chars": 139936,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8821A Co-exist "
  },
  {
    "path": "hal/btc/HalBtc8821a2Ant.h",
    "chars": 5823,
    "preview": "//===========================================\n// The following is for 8821A 2Ant BT Co-exist definition\n//=============="
  },
  {
    "path": "hal/btc/HalBtc8821aCsr2Ant.c",
    "chars": 120899,
    "preview": "//============================================================\n// Description:\n//\n// This file is for RTL8821A_CSR_CSR C"
  },
  {
    "path": "hal/btc/HalBtc8821aCsr2Ant.h",
    "chars": 5460,
    "preview": "//===========================================\n// The following is for 8821A_CSR 2Ant BT Co-exist definition\n//=========="
  },
  {
    "path": "hal/btc/HalBtcOutSrc.h",
    "chars": 17460,
    "preview": "#ifndef\t__HALBTC_OUT_SRC_H__\n#define __HALBTC_OUT_SRC_H__\n\n#define\t\tNORMAL_EXEC\t\t\t\t\tFALSE\n#define\t\tFORCE_EXEC\t\t\t\t\t\tTRUE\n"
  },
  {
    "path": "hal/btc/Mp_Precomp.h",
    "chars": 2245,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2013 Realtek Corporat"
  },
  {
    "path": "hal/efuse/efuse_mask.h",
    "chars": 1648,
    "preview": "\n#if DEV_BUS_TYPE == RT_USB_INTERFACE\n\n\t#if defined(CONFIG_RTL8188E)\n\t#include \"rtl8188e/HalEfuseMask8188E_USB.h\"\n\t#endi"
  },
  {
    "path": "hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c",
    "chars": 2049,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h",
    "chars": 1262,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c",
    "chars": 2038,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h",
    "chars": 1258,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_btcoex.c",
    "chars": 91052,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2013 Realtek Corporat"
  },
  {
    "path": "hal/hal_com.c",
    "chars": 228266,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_com_c2h.h",
    "chars": 1369,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "hal/hal_com_phycfg.c",
    "chars": 122488,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_dm.c",
    "chars": 7240,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2014 Realtek Corporat"
  },
  {
    "path": "hal/hal_dm.h",
    "chars": 1045,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_hci/hal_usb.c",
    "chars": 11295,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_intf.c",
    "chars": 30309,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "hal/hal_mp.c",
    "chars": 80413,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/hal_phy.c",
    "chars": 6771,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/led/hal_usb_led.c",
    "chars": 128448,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "hal/phydm/halhwimg.h",
    "chars": 3308,
    "preview": "#pragma once\n#ifndef __INC_HW_IMG_H\n#define __INC_HW_IMG_H\n\n//\n// 2011/03/15 MH Add for different IC HW image file selec"
  },
  {
    "path": "hal/phydm/halphyrf_ap.c",
    "chars": 88633,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/halphyrf_ap.h",
    "chars": 3753,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/halphyrf_ce.c",
    "chars": 31170,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/halphyrf_ce.h",
    "chars": 2665,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/halphyrf_win.c",
    "chars": 29973,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/halphyrf_win.h",
    "chars": 2753,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/mp_precomp.h",
    "chars": 933,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm.c",
    "chars": 68006,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm.h",
    "chars": 36209,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_acs.c",
    "chars": 42216,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_acs.h",
    "chars": 3210,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_adaptivity.c",
    "chars": 34746,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_adaptivity.h",
    "chars": 3234,
    "preview": "\n/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek "
  },
  {
    "path": "hal/phydm/phydm_antdect.c",
    "chars": 45328,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_antdect.h",
    "chars": 2275,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_antdiv.c",
    "chars": 160870,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_antdiv.h",
    "chars": 13646,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_beamforming.c",
    "chars": 61908,
    "preview": "#include \"mp_precomp.h\"\n#include \"phydm_precomp.h\"\n\n#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\n#if WPP_SOFTWARE_TRACE\n#include"
  },
  {
    "path": "hal/phydm/phydm_beamforming.h",
    "chars": 8948,
    "preview": "#ifndef __INC_BEAMFORMING_H\n#define __INC_BEAMFORMING_H\n\n#ifndef BEAMFORMING_SUPPORT\n#define\tBEAMFORMING_SUPPORT\t\t0\n#end"
  },
  {
    "path": "hal/phydm/phydm_cfotracking.c",
    "chars": 11402,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_cfotracking.h",
    "chars": 1746,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_debug.c",
    "chars": 72305,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_debug.h",
    "chars": 9424,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dig.c",
    "chars": 65686,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dig.h",
    "chars": 7453,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dynamicbbpowersaving.c",
    "chars": 6093,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dynamicbbpowersaving.h",
    "chars": 1579,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dynamictxpower.c",
    "chars": 19750,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_dynamictxpower.h",
    "chars": 2341,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_edcaturbocheck.c",
    "chars": 25289,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_edcaturbocheck.h",
    "chars": 2923,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_hwconfig.c",
    "chars": 97633,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_hwconfig.h",
    "chars": 13205,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_interface.c",
    "chars": 23700,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_interface.h",
    "chars": 8893,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_noisemonitor.c",
    "chars": 10353,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_noisemonitor.h",
    "chars": 1616,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_pathdiv.c",
    "chars": 68575,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_pathdiv.h",
    "chars": 6266,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_ap.c",
    "chars": 47737,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_ap.h",
    "chars": 9091,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_ce.c",
    "chars": 25067,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_ce.h",
    "chars": 8901,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_win.c",
    "chars": 25161,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_powertracking_win.h",
    "chars": 8275,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_pre_define.h",
    "chars": 16073,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_precomp.h",
    "chars": 9311,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_rainfo.c",
    "chars": 81937,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_rainfo.h",
    "chars": 9957,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_reg.h",
    "chars": 7305,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_regdefine11ac.h",
    "chars": 2849,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_regdefine11n.h",
    "chars": 7010,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_rxhp.c",
    "chars": 50522,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_rxhp.h",
    "chars": 2465,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/phydm_types.h",
    "chars": 9647,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtchnlplan.c",
    "chars": 16439,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "hal/phydm/rtchnlplan.h",
    "chars": 22199,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2012 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/hal8814areg_odm.h",
    "chars": 1453,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_bb.c",
    "chars": 116686,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_bb.h",
    "chars": 3599,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_fw.c",
    "chars": 748551,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_fw.h",
    "chars": 1815,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_mac.c",
    "chars": 8892,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_mac.h",
    "chars": 1414,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_rf.c",
    "chars": 337980,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halhwimg8814a_rf.h",
    "chars": 5420,
    "preview": "/****************************************************************************** \n* \n* Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_ap.c",
    "chars": 55819,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_ap.h",
    "chars": 3268,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_ce.c",
    "chars": 20103,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_ce.h",
    "chars": 2533,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_win.c",
    "chars": 16163,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/halphyrf_8814a_win.h",
    "chars": 2412,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_iqk_8814a.c",
    "chars": 17784,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_iqk_8814a.h",
    "chars": 1915,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_regconfig8814a.c",
    "chars": 5607,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_regconfig8814a.h",
    "chars": 2479,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_rtl8814a.c",
    "chars": 12177,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/phydm_rtl8814a.h",
    "chars": 1693,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/phydm/rtl8814a/version_rtl8814a.h",
    "chars": 330,
    "preview": "/*RTL8814A PHY Parameters*/\n/* \n[Caution] \n  Since 01/Aug/2015, the commit rules will be simplified. \n  You do not need "
  },
  {
    "path": "hal/phydm/txbf/halcomtxbf.c",
    "chars": 13831,
    "preview": "//============================================================\n// Description:\n//\n// This file is for TXBF mechanism\n//\n"
  },
  {
    "path": "hal/phydm/txbf/halcomtxbf.h",
    "chars": 3386,
    "preview": "#ifndef __HAL_COM_TXBF_H__\n#define __HAL_COM_TXBF_H__\n\n/*\ntypedef\tBOOLEAN\n(*TXBF_GET)(\n\tIN\tPVOID\t\t\tpAdapter,\n\tIN\tu1Byte\t"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8192e.c",
    "chars": 13308,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 8192E TXBF mechani"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8192e.h",
    "chars": 745,
    "preview": "#ifndef __HAL_TXBF_8192E_H__\n#define __HAL_TXBF_8192E_H__\n\n#if (BEAMFORMING_SUPPORT == 1)\n#if (RTL8192E_SUPPORT == 1)\nVO"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8814a.c",
    "chars": 21122,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 8814A TXBF mechani"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8814a.h",
    "chars": 1058,
    "preview": "#ifndef __HAL_TXBF_8814A_H__\n#define __HAL_TXBF_8814A_H__\n\n#if (BEAMFORMING_SUPPORT == 1)\n#if (RTL8814A_SUPPORT == 1)\nVO"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8821b.c",
    "chars": 13982,
    "preview": "/*============================================================*/\n/*Description:*/\n/*This file is for 8812/8821/8811 TXBF"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8821b.h",
    "chars": 643,
    "preview": "#ifndef __HAL_TXBF_8821B_H__\n#define __HAL_TXBF_8821B_H__\n#if (BEAMFORMING_SUPPORT == 1)\n#if (RTL8821B_SUPPORT == 1)\nVOI"
  },
  {
    "path": "hal/phydm/txbf/haltxbf8822b.c",
    "chars": 37872,
    "preview": "/*============================================================*/\n/* Description:                                        "
  },
  {
    "path": "hal/phydm/txbf/haltxbf8822b.h",
    "chars": 787,
    "preview": "#ifndef __HAL_TXBF_8822B_H__\n#define __HAL_TXBF_8822B_H__\n#if (BEAMFORMING_SUPPORT == 1)\n#if (RTL8822B_SUPPORT == 1)\n\nVO"
  },
  {
    "path": "hal/phydm/txbf/haltxbfinterface.c",
    "chars": 39031,
    "preview": "//============================================================\n// Description:\n//\n// This file is for TXBF interface mec"
  },
  {
    "path": "hal/phydm/txbf/haltxbfinterface.h",
    "chars": 2958,
    "preview": "#ifndef __HAL_TXBF_INTERFACE_H__\n#define __HAL_TXBF_INTERFACE_H__\n\n#if (BEAMFORMING_SUPPORT == 1)\n#if (DM_ODM_SUPPORT_TY"
  },
  {
    "path": "hal/phydm/txbf/haltxbfjaguar.c",
    "chars": 17119,
    "preview": "//============================================================\n// Description:\n//\n// This file is for 8812/8821/8811 TXB"
  },
  {
    "path": "hal/phydm/txbf/haltxbfjaguar.h",
    "chars": 1055,
    "preview": "#ifndef __HAL_TXBF_JAGUAR_H__\n#define __HAL_TXBF_JAGUAR_H__\n\n#if (BEAMFORMING_SUPPORT == 1)\n#if ((RTL8812A_SUPPORT == 1)"
  },
  {
    "path": "hal/rtl8814a/Hal8814PwrSeq.c",
    "chars": 3004,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_cmd.c",
    "chars": 50533,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_dm.c",
    "chars": 14403,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_hal_init.c",
    "chars": 200683,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_phycfg.c",
    "chars": 99815,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_rf6052.c",
    "chars": 6985,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_rxdesc.c",
    "chars": 3107,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_sreset.c",
    "chars": 3757,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/rtl8814a_xmit.c",
    "chars": 14985,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/usb/rtl8814au_led.c",
    "chars": 4158,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/usb/rtl8814au_recv.c",
    "chars": 1242,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/usb/rtl8814au_xmit.c",
    "chars": 30759,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/usb/usb_halinit.c",
    "chars": 65201,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "hal/rtl8814a/usb/usb_ops_linux.c",
    "chars": 13593,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  },
  {
    "path": "ifcfg-wlan0",
    "chars": 51,
    "preview": "#DHCP client\nDEVICE=wlan0\nBOOTPROTO=dhcp\nONBOOT=yes"
  },
  {
    "path": "include/Hal8188EPhyCfg.h",
    "chars": 7130,
    "preview": "/******************************************************************************\n *\n * Copyright(c) 2007 - 2011 Realtek C"
  }
]

// ... and 229 more files (download for full content)

About this extraction

This page contains the full source code of the zebulon2/rtl8814au GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 429 files (11.2 MB), approximately 2.9M tokens, and a symbol index with 8473 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!