net: wireless: rockchip: add rtl8822be pcie wifi driver
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8822be / hal / phydm / phydm.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/phydm/phydm.h b/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/phydm/phydm.h
new file mode 100644 (file)
index 0000000..c09ed46
--- /dev/null
@@ -0,0 +1,1410 @@
+/******************************************************************************\r
+ *\r
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
+ *                                        \r
+ * This program is free software; you can redistribute it and/or modify it\r
+ * under the terms of version 2 of the GNU General Public License as\r
+ * published by the Free Software Foundation.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but WITHOUT\r
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ * more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License along with\r
+ * this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
+ *\r
+ *\r
+ ******************************************************************************/\r
+\r
+\r
+#ifndef        __HALDMOUTSRC_H__\r
+#define __HALDMOUTSRC_H__\r
+\r
+//============================================================\r
+// include files\r
+//============================================================\r
+#include "phydm_pre_define.h"\r
+#include "phydm_dig.h"\r
+#include "phydm_edcaturbocheck.h"\r
+#include "phydm_pathdiv.h"\r
+#include "phydm_antdiv.h"\r
+#include "phydm_antdect.h"\r
+#include "phydm_dynamicbbpowersaving.h"\r
+#include "phydm_rainfo.h"\r
+#include "phydm_dynamictxpower.h"\r
+#include "phydm_cfotracking.h"\r
+#include "phydm_acs.h"\r
+#include "phydm_adaptivity.h"\r
+#include "phydm_iqk.h"\r
+#include "phydm_dfs.h"\r
+#include "phydm_ccx.h"\r
+#include "txbf/phydm_hal_txbf_api.h"\r
+\r
+#include "phydm_adc_sampling.h"\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
+#include "phydm_beamforming.h"\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_AP))\r
+#include "halphyrf_ap.h"\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_CE))\r
+#include "phydm_noisemonitor.h"\r
+#include "halphyrf_ce.h"\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) \r
+#include "halphyrf_win.h"\r
+#include "phydm_noisemonitor.h"\r
+#endif\r
+\r
+//============================================================\r
+// Definition \r
+//============================================================\r
+//\r
+// 2011/09/22 MH Define all team supprt ability.\r
+//\r
+\r
+/* Traffic load decision */\r
+#define        TRAFFIC_ULTRA_LOW       1\r
+#define        TRAFFIC_LOW                     2\r
+#define        TRAFFIC_MID                     3\r
+#define        TRAFFIC_HIGH                    4\r
+\r
+#define        NONE                    0\r
+\r
+/*NBI API------------------------------------*/\r
+#define        NBI_ENABLE 1\r
+#define        NBI_DISABLE 2\r
+\r
+#define        NBI_TABLE_SIZE_128      27\r
+#define        NBI_TABLE_SIZE_256      59\r
+\r
+#define        NUM_START_CH_80M        7\r
+#define        NUM_START_CH_40M        14\r
+\r
+#define        CH_OFFSET_40M           2\r
+#define        CH_OFFSET_80M           6\r
+\r
+/*CSI MASK API------------------------------------*/\r
+#define        CSI_MASK_ENABLE 1\r
+#define        CSI_MASK_DISABLE 2\r
+\r
+/*------------------------------------------------*/\r
+\r
+#define        FFT_128_TYPE    1\r
+#define        FFT_256_TYPE    2\r
+\r
+#define        SET_SUCCESS     1\r
+#define        SET_ERROR               2\r
+#define        SET_NO_NEED     3\r
+\r
+#define        FREQ_POSITIVE   1\r
+#define        FREQ_NEGATIVE   2\r
+\r
+\r
+\r
+//============================================================\r
+// structure and define\r
+//============================================================\r
+\r
+//\r
+// 2011/09/20 MH Add for AP/ADSLpseudo DM structuer requirement.\r
+// We need to remove to other position???\r
+//\r
+#if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
+typedef                struct rtl8192cd_priv {\r
+       u1Byte          temp;\r
+\r
+}rtl8192cd_priv, *prtl8192cd_priv;\r
+#endif\r
+\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & ODM_AP)\r
+typedef                struct _ADAPTER{\r
+       u1Byte          temp;\r
+       #ifdef AP_BUILD_WORKAROUND\r
+       HAL_DATA_TYPE*          temp2;\r
+       prtl8192cd_priv         priv;\r
+       #endif\r
+}ADAPTER, *PADAPTER;\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_AP)\r
+\r
+typedef                struct _WLAN_STA{\r
+       u1Byte          temp;\r
+} WLAN_STA, *PRT_WLAN_STA;\r
+\r
+#endif\r
+\r
+typedef struct _Dynamic_Primary_CCA{\r
+       u1Byte          PriCCA_flag;\r
+       u1Byte          intf_flag;\r
+       u1Byte          intf_type;  \r
+       u1Byte          DupRTS_flag;\r
+       u1Byte          Monitor_flag;\r
+       u1Byte          CH_offset;\r
+       u1Byte          MF_state;\r
+}Pri_CCA_T, *pPri_CCA_T;\r
+\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & ODM_AP)\r
+       #ifdef ADSL_AP_BUILD_WORKAROUND\r
+       #define MAX_TOLERANCE                   5\r
+       #define IQK_DELAY_TIME                  1               /*ms*/\r
+       #endif\r
+#endif /*#if(DM_ODM_SUPPORT_TYPE & (ODM_AP))*/\r
+\r
+#define                DM_Type_ByFW                    0\r
+#define                DM_Type_ByDriver                1\r
+\r
+//\r
+// Declare for common info\r
+//\r
+\r
+#define IQK_THRESHOLD                  8\r
+#define DPK_THRESHOLD                  4\r
+\r
+\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_AP))\r
+__PACK typedef struct _ODM_Phy_Status_Info_\r
+{\r
+       u1Byte          RxPWDBAll;\r
+       u1Byte          SignalQuality;                                  /* in 0-100 index. */\r
+       u1Byte          RxMIMOSignalStrength[4];                /* in 0~100 index */\r
+       s1Byte          RxMIMOSignalQuality[4];         /* EVM */\r
+       s1Byte          RxSNR[4];                                       /* per-path's SNR */\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       u1Byte          RxCount:2;                                      /* RX path counter---*/\r
+       u1Byte          BandWidth:2;\r
+       u1Byte          rxsc:4;                                         /* sub-channel---*/\r
+#else\r
+       u1Byte          BandWidth;\r
+#endif\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       u1Byte          channel;                                                /* channel number---*/\r
+       BOOLEAN         bMuPacket;                                      /* is MU packet or not---*/\r
+       BOOLEAN         bBeamformed;                            /* BF packet---*/\r
+#endif\r
+} __WLAN_ATTRIB_PACK__ ODM_PHY_INFO_T, *PODM_PHY_INFO_T;\r
+\r
+typedef struct _ODM_Phy_Status_Info_Append_\r
+{\r
+       u1Byte          MAC_CRC32;      \r
+\r
+}ODM_PHY_INFO_Append_T,*PODM_PHY_INFO_Append_T;\r
+\r
+#else\r
+\r
+typedef struct _ODM_Phy_Status_Info_\r
+{\r
+       //\r
+       // Be care, if you want to add any element please insert between \r
+       // RxPWDBAll & SignalStrength.\r
+       //\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN))\r
+       u4Byte          RxPWDBAll;      \r
+#else\r
+       u1Byte          RxPWDBAll;      \r
+#endif\r
+       u1Byte          SignalQuality;                          /* in 0-100 index. */\r
+       s1Byte          RxMIMOSignalQuality[4];         /* per-path's EVM */\r
+       u1Byte          RxMIMOEVMdbm[4];                        /* per-path's EVM dbm */\r
+       u1Byte          RxMIMOSignalStrength[4];        /* in 0~100 index */\r
+       s2Byte          Cfo_short[4];                           /* per-path's Cfo_short */\r
+       s2Byte          Cfo_tail[4];                                    /* per-path's Cfo_tail */\r
+       s1Byte          RxPower;                                        /* in dBm Translate from PWdB */\r
+       s1Byte          RecvSignalPower;                        /* Real power in dBm for this packet, no beautification and aggregation. Keep this raw info to be used for the other procedures. */\r
+       u1Byte          BTRxRSSIPercentage;\r
+       u1Byte          SignalStrength;                         /* in 0-100 index. */\r
+       s1Byte          RxPwr[4];                                       /* per-path's pwdb */\r
+       s1Byte          RxSNR[4];                                       /* per-path's SNR       */\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       u1Byte          RxCount:2;                                      /* RX path counter---*/\r
+       u1Byte          BandWidth:2;\r
+       u1Byte          rxsc:4;                                         /* sub-channel---*/\r
+#else\r
+       u1Byte          BandWidth;\r
+#endif\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))\r
+       u1Byte          btCoexPwrAdjust;\r
+#endif\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       u1Byte          channel;                                                /* channel number---*/\r
+       BOOLEAN         bMuPacket;                                      /* is MU packet or not---*/\r
+       BOOLEAN         bBeamformed;                            /* BF packet---*/\r
+#endif\r
+}ODM_PHY_INFO_T,*PODM_PHY_INFO_T;\r
+#endif\r
+\r
+typedef struct _ODM_Per_Pkt_Info_\r
+{\r
+       //u1Byte                Rate;   \r
+       u1Byte          DataRate;\r
+       u1Byte          StationID;\r
+       BOOLEAN         bPacketMatchBSSID;\r
+       BOOLEAN         bPacketToSelf;\r
+       BOOLEAN         bPacketBeacon;\r
+       BOOLEAN         bToSelf;\r
+}ODM_PACKET_INFO_T,*PODM_PACKET_INFO_T;\r
+\r
+\r
+typedef struct _ODM_Phy_Dbg_Info_\r
+{\r
+       //ODM Write,debug info\r
+       s1Byte          RxSNRdB[4];\r
+       u4Byte          NumQryPhyStatus;\r
+       u4Byte          NumQryPhyStatusCCK;\r
+       u4Byte          NumQryPhyStatusOFDM;\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       u4Byte          NumQryMuPkt;\r
+       u4Byte          NumQryBfPkt;\r
+       u4Byte          NumQryMuVhtPkt[40];\r
+       u4Byte          NumQryVhtPkt[40];\r
+#endif\r
+       u1Byte          NumQryBeaconPkt;\r
+       //Others\r
+       s4Byte          RxEVM[4];       \r
+       \r
+}ODM_PHY_DBG_INFO_T;\r
+\r
+\r
+typedef struct _ODM_Mac_Status_Info_\r
+{\r
+       u1Byte  test;\r
+       \r
+}ODM_MAC_INFO;\r
+\r
+//\r
+// 2011/20/20 MH For MP driver RT_WLAN_STA =  STA_INFO_T\r
+// Please declare below ODM relative info in your STA info structure.\r
+//\r
+#if 1\r
+typedef                struct _ODM_STA_INFO{\r
+       // Driver Write\r
+       BOOLEAN         bUsed;                          // record the sta status link or not?\r
+       //u1Byte                WirelessMode;           // \r
+       u1Byte          IOTPeer;                        // Enum value.  HT_IOT_PEER_E\r
+\r
+       // ODM Write\r
+       //1 PHY_STATUS_INFO\r
+       u1Byte          RSSI_Path[4];           // \r
+       u1Byte          RSSI_Ave;\r
+       u1Byte          RXEVM[4];\r
+       u1Byte          RXSNR[4];\r
+\r
+       // ODM Write\r
+       //1 TX_INFO (may changed by IC)\r
+       //TX_INFO_T             pTxInfo;                                // Define in IC folder. Move lower layer.\r
+#if 0\r
+       u1Byte          ANTSEL_A;                       //in Jagar: 4bit; others: 2bit\r
+       u1Byte          ANTSEL_B;                       //in Jagar: 4bit; others: 2bit\r
+       u1Byte          ANTSEL_C;                       //only in Jagar: 4bit\r
+       u1Byte          ANTSEL_D;                       //only in Jagar: 4bit\r
+       u1Byte          TX_ANTL;                        //not in Jagar: 2bit\r
+       u1Byte          TX_ANT_HT;                      //not in Jagar: 2bit\r
+       u1Byte          TX_ANT_CCK;                     //not in Jagar: 2bit\r
+       u1Byte          TXAGC_A;                        //not in Jagar: 4bit\r
+       u1Byte          TXAGC_B;                        //not in Jagar: 4bit\r
+       u1Byte          TXPWR_OFFSET;           //only in Jagar: 3bit\r
+       u1Byte          TX_ANT;                         //only in Jagar: 4bit for TX_ANTL/TX_ANTHT/TX_ANT_CCK\r
+#endif\r
+\r
+       //\r
+       //      Please use compile flag to disabe the strcutrue for other IC except 88E.\r
+       //      Move To lower layer.\r
+       //\r
+       // ODM Write Wilson will handle this part(said by Luke.Lee)\r
+       //TX_RPT_T              pTxRpt;                         // Define in IC folder. Move lower layer.\r
+#if 0  \r
+       //1 For 88E RA (don't redefine the naming)\r
+       u1Byte          rate_id;\r
+       u1Byte          rate_SGI;\r
+       u1Byte          rssi_sta_ra;\r
+       u1Byte          SGI_enable;\r
+       u1Byte          Decision_rate;\r
+       u1Byte          Pre_rate;\r
+       u1Byte          Active;\r
+\r
+       // Driver write Wilson handle.\r
+       //1 TX_RPT (don't redefine the naming)\r
+       u2Byte          RTY[4];                         // ???\r
+       u2Byte          TOTAL;                          // ???\r
+       u2Byte          DROP;                           // ???\r
+       //\r
+       // Please use compile flag to disabe the strcutrue for other IC except 88E.\r
+       //\r
+#endif\r
+\r
+}ODM_STA_INFO_T, *PODM_STA_INFO_T;\r
+#endif\r
+\r
+//\r
+// 2011/10/20 MH Define Common info enum for all team.\r
+//\r
+typedef enum _ODM_Common_Info_Definition\r
+{\r
+//-------------REMOVED CASE-----------//\r
+       //ODM_CMNINFO_CCK_HP,\r
+       //ODM_CMNINFO_RFPATH_ENABLE,            // Define as ODM write???       \r
+       //ODM_CMNINFO_BT_COEXIST,                               // ODM_BT_COEXIST_E\r
+       //ODM_CMNINFO_OP_MODE,                          // ODM_OPERATION_MODE_E\r
+//-------------REMOVED CASE-----------//\r
+\r
+       //\r
+       // Fixed value:\r
+       //\r
+\r
+       //-----------HOOK BEFORE REG INIT-----------//\r
+       ODM_CMNINFO_PLATFORM = 0,\r
+       ODM_CMNINFO_ABILITY,                                    // ODM_ABILITY_E\r
+       ODM_CMNINFO_INTERFACE,                          // ODM_INTERFACE_E\r
+       ODM_CMNINFO_MP_TEST_CHIP,\r
+       ODM_CMNINFO_IC_TYPE,                                    // ODM_IC_TYPE_E\r
+       ODM_CMNINFO_CUT_VER,                                    // ODM_CUT_VERSION_E\r
+       ODM_CMNINFO_FAB_VER,                                    // ODM_FAB_E\r
+       ODM_CMNINFO_RF_TYPE,                                    // ODM_RF_PATH_E or ODM_RF_TYPE_E?\r
+       ODM_CMNINFO_RFE_TYPE, \r
+       ODM_CMNINFO_BOARD_TYPE,                         // ODM_BOARD_TYPE_E\r
+       ODM_CMNINFO_PACKAGE_TYPE,\r
+       ODM_CMNINFO_EXT_LNA,                                    // TRUE\r
+       ODM_CMNINFO_5G_EXT_LNA, \r
+       ODM_CMNINFO_EXT_PA,\r
+       ODM_CMNINFO_5G_EXT_PA,\r
+       ODM_CMNINFO_GPA,\r
+       ODM_CMNINFO_APA,\r
+       ODM_CMNINFO_GLNA,\r
+       ODM_CMNINFO_ALNA,\r
+       ODM_CMNINFO_EXT_TRSW,\r
+       ODM_CMNINFO_EXT_LNA_GAIN,\r
+       ODM_CMNINFO_PATCH_ID,                           //CUSTOMER ID\r
+       ODM_CMNINFO_BINHCT_TEST,\r
+       ODM_CMNINFO_BWIFI_TEST,\r
+       ODM_CMNINFO_SMART_CONCURRENT,\r
+       ODM_CMNINFO_CONFIG_BB_RF,\r
+       ODM_CMNINFO_DOMAIN_CODE_2G,\r
+       ODM_CMNINFO_DOMAIN_CODE_5G,\r
+       ODM_CMNINFO_IQKFWOFFLOAD,\r
+       ODM_CMNINFO_IQKPAOFF,\r
+       ODM_CMNINFO_HUBUSBMODE,\r
+       ODM_CMNINFO_FWDWRSVDPAGEINPROGRESS,\r
+       ODM_CMNINFO_TX_TP,\r
+       ODM_CMNINFO_RX_TP,\r
+       ODM_CMNINFO_SOUNDING_SEQ,\r
+       ODM_CMNINFO_REGRFKFREEENABLE,\r
+       ODM_CMNINFO_RFKFREEENABLE,\r
+       ODM_CMNINFO_NORMAL_RX_PATH_CHANGE,\r
+       /*-----------HOOK BEFORE REG INIT-----------*/\r
+\r
+\r
+       //\r
+       // Dynamic value:\r
+       //\r
+//--------- POINTER REFERENCE-----------//\r
+       ODM_CMNINFO_MAC_PHY_MODE,                       // ODM_MAC_PHY_MODE_E\r
+       ODM_CMNINFO_TX_UNI,\r
+       ODM_CMNINFO_RX_UNI,\r
+       ODM_CMNINFO_WM_MODE,                            // ODM_WIRELESS_MODE_E\r
+       ODM_CMNINFO_BAND,                                       // ODM_BAND_TYPE_E\r
+       ODM_CMNINFO_SEC_CHNL_OFFSET,            // ODM_SEC_CHNL_OFFSET_E\r
+       ODM_CMNINFO_SEC_MODE,                           // ODM_SECURITY_E\r
+       ODM_CMNINFO_BW,                                         // ODM_BW_E\r
+       ODM_CMNINFO_CHNL,\r
+       ODM_CMNINFO_FORCED_RATE,\r
+       \r
+       ODM_CMNINFO_DMSP_GET_VALUE,\r
+       ODM_CMNINFO_BUDDY_ADAPTOR,\r
+       ODM_CMNINFO_DMSP_IS_MASTER,\r
+       ODM_CMNINFO_SCAN,\r
+       ODM_CMNINFO_POWER_SAVING,\r
+       ODM_CMNINFO_ONE_PATH_CCA,                       // ODM_CCA_PATH_E\r
+       ODM_CMNINFO_DRV_STOP,\r
+       ODM_CMNINFO_PNP_IN,\r
+       ODM_CMNINFO_INIT_ON,\r
+       ODM_CMNINFO_ANT_TEST,\r
+       ODM_CMNINFO_NET_CLOSED,\r
+       //ODM_CMNINFO_RTSTA_AID,                                // For win driver only?\r
+       ODM_CMNINFO_FORCED_IGI_LB,\r
+       ODM_CMNINFO_P2P_LINK,\r
+       ODM_CMNINFO_FCS_MODE,\r
+       ODM_CMNINFO_IS1ANTENNA,\r
+       ODM_CMNINFO_RFDEFAULTPATH,\r
+       ODM_CMNINFO_DFS_MASTER_ENABLE,\r
+       ODM_CMNINFO_FORCE_TX_ANT_BY_TXDESC,\r
+//--------- POINTER REFERENCE-----------//\r
+\r
+//------------CALL BY VALUE-------------//\r
+       ODM_CMNINFO_WIFI_DIRECT,\r
+       ODM_CMNINFO_WIFI_DISPLAY,\r
+       ODM_CMNINFO_LINK_IN_PROGRESS,                   \r
+       ODM_CMNINFO_LINK,\r
+       ODM_CMNINFO_STATION_STATE,\r
+       ODM_CMNINFO_RSSI_MIN,\r
+       ODM_CMNINFO_DBG_COMP,                           /* u4SByte*/\r
+       ODM_CMNINFO_DBG_LEVEL,                          /* u4Byte*/\r
+       ODM_CMNINFO_RA_THRESHOLD_HIGH,          /* u1Byte*/\r
+       ODM_CMNINFO_RA_THRESHOLD_LOW,           /* u1Byte*/\r
+       ODM_CMNINFO_RF_ANTENNA_TYPE,                    /* u1Byte*/\r
+       ODM_CMNINFO_WITH_EXT_ANTENNA_SWITCH,\r
+       ODM_CMNINFO_BE_FIX_TX_ANT,\r
+       ODM_CMNINFO_BT_ENABLED,\r
+       ODM_CMNINFO_BT_HS_CONNECT_PROCESS,\r
+       ODM_CMNINFO_BT_HS_RSSI,\r
+       ODM_CMNINFO_BT_OPERATION,\r
+       ODM_CMNINFO_BT_LIMITED_DIG,                                     //Need to Limited Dig or not\r
+       ODM_CMNINFO_BT_DIG,\r
+       ODM_CMNINFO_BT_BUSY,                                    //Check Bt is using or not//neil        \r
+       ODM_CMNINFO_BT_DISABLE_EDCA,\r
+#if(DM_ODM_SUPPORT_TYPE & ODM_AP)              // for repeater mode add by YuChen 2014.06.23\r
+#ifdef UNIVERSAL_REPEATER\r
+       ODM_CMNINFO_VXD_LINK,\r
+#endif\r
+#endif\r
+       ODM_CMNINFO_AP_TOTAL_NUM,\r
+       ODM_CMNINFO_POWER_TRAINING,\r
+       ODM_CMNINFO_DFS_REGION_DOMAIN,\r
+//------------CALL BY VALUE-------------//\r
+\r
+       //\r
+       // Dynamic ptr array hook itms.\r
+       //\r
+       ODM_CMNINFO_STA_STATUS,\r
+       ODM_CMNINFO_PHY_STATUS,\r
+       ODM_CMNINFO_MAC_STATUS,\r
+       \r
+       ODM_CMNINFO_MAX,\r
+\r
+\r
+}ODM_CMNINFO_E;\r
+\r
+typedef enum _PHYDM_API_Definition {\r
+\r
+       PHYDM_API_NBI                   = 1,\r
+       PHYDM_API_CSI_MASK,\r
+\r
+       \r
+} PHYDM_API_E;\r
+\r
+\r
+//\r
+// 2011/10/20 MH Define ODM support ability.  ODM_CMNINFO_ABILITY\r
+//\r
+typedef enum _ODM_Support_Ability_Definition\r
+{\r
+       //\r
+       // BB ODM section BIT 0-19\r
+       //\r
+       ODM_BB_DIG                                      = BIT0,\r
+       ODM_BB_RA_MASK                          = BIT1,\r
+       ODM_BB_DYNAMIC_TXPWR            = BIT2,\r
+       ODM_BB_FA_CNT                                   = BIT3,\r
+       ODM_BB_RSSI_MONITOR                     = BIT4,\r
+       ODM_BB_CCK_PD                                   = BIT5,\r
+       ODM_BB_ANT_DIV                          = BIT6,\r
+       ODM_BB_PWR_TRAIN                                = BIT8,\r
+       ODM_BB_RATE_ADAPTIVE                    = BIT9,\r
+       ODM_BB_PATH_DIV                         = BIT10,\r
+       ODM_BB_ADAPTIVITY                               = BIT13,\r
+       ODM_BB_CFO_TRACKING                     = BIT14,\r
+       ODM_BB_NHM_CNT                          = BIT15,\r
+       ODM_BB_PRIMARY_CCA                      = BIT16,\r
+       ODM_BB_TXBF                                     = BIT17,\r
+       ODM_BB_DYNAMIC_ARFR                     = BIT18,\r
+       \r
+       //\r
+       // MAC DM section BIT 20-23\r
+       //\r
+       ODM_MAC_EDCA_TURBO                      = BIT20,\r
+       ODM_MAC_EARLY_MODE                      = BIT21,\r
+       \r
+       //\r
+       // RF ODM section BIT 24-31\r
+       //\r
+       ODM_RF_TX_PWR_TRACK                     = BIT24,\r
+       ODM_RF_RX_GAIN_TRACK                    = BIT25,\r
+       ODM_RF_CALIBRATION                      = BIT26,\r
+       \r
+}ODM_ABILITY_E;\r
+\r
+\r
+// ODM_CMNINFO_ONE_PATH_CCA\r
+typedef enum tag_CCA_Path\r
+{\r
+       ODM_CCA_2R              = 0,\r
+       ODM_CCA_1R_A            = 1,\r
+       ODM_CCA_1R_B            = 2,\r
+}ODM_CCA_PATH_E;\r
+\r
+typedef enum CCA_PATHDIV_EN {\r
+       CCA_PATHDIV_DISABLE             = 0,\r
+       CCA_PATHDIV_ENABLE              = 1,\r
+\r
+} CCA_PATHDIV_EN_E;\r
+\r
+\r
+typedef enum _BASEBAND_CONFIG_PHY_REG_PG_VALUE_TYPE{\r
+       PHY_REG_PG_RELATIVE_VALUE = 0,\r
+       PHY_REG_PG_EXACT_VALUE = 1\r
+} PHY_REG_PG_TYPE;\r
+\r
+//\r
+// 2011/09/22 MH Copy from SD4 defined structure. We use to support PHY DM integration.\r
+//\r
+#if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
+#if (RT_PLATFORM != PLATFORM_LINUX)\r
+typedef \r
+#endif\r
+       \r
+struct DM_Out_Source_Dynamic_Mechanism_Structure\r
+#else// for AP,ADSL,CE Team\r
+typedef  struct DM_Out_Source_Dynamic_Mechanism_Structure\r
+#endif\r
+{\r
+       //      Add for different team use temporarily\r
+       //\r
+       PADAPTER                Adapter;                // For CE/NIC team\r
+       prtl8192cd_priv priv;                   // For AP/ADSL team\r
+       // WHen you use Adapter or priv pointer, you must make sure the pointer is ready.\r
+       BOOLEAN                 odm_ready;\r
+\r
+#if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_WIN))\r
+       rtl8192cd_priv          fake_priv;\r
+#endif\r
+#if (DM_ODM_SUPPORT_TYPE & ODM_AP)\r
+       // ADSL_AP_BUILD_WORKAROUND\r
+       ADAPTER                 fake_adapter;\r
+#endif\r
+       \r
+       PHY_REG_PG_TYPE         PhyRegPgValueType;\r
+       u1Byte                          PhyRegPgVersion;\r
+\r
+       u4Byte                  DebugComponents;\r
+       u4Byte                  DebugLevel;\r
+       \r
+       u4Byte                  NumQryPhyStatusAll;     //CCK + OFDM\r
+       u4Byte                  LastNumQryPhyStatusAll; \r
+       u4Byte                  RxPWDBAve;\r
+       BOOLEAN                 MPDIG_2G;               //off MPDIG\r
+       u1Byte                  Times_2G;\r
+       BOOLEAN                 bInitHwInfoByRfe;\r
+       \r
+//------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//\r
+       BOOLEAN                 bCckHighPower; \r
+       u1Byte                  RFPathRxEnable;         // ODM_CMNINFO_RFPATH_ENABLE\r
+       u1Byte                  ControlChannel;\r
+//------ ODM HANDLE, DRIVER NEEDS NOT TO HOOK------//\r
+\r
+//--------REMOVED COMMON INFO----------//\r
+       //u1Byte                                PseudoMacPhyMode;\r
+       //BOOLEAN                       *BTCoexist;\r
+       //BOOLEAN                       PseudoBtCoexist;\r
+       //u1Byte                                OPMode;\r
+       //BOOLEAN                       bAPMode;\r
+       //BOOLEAN                       bClientMode;\r
+       //BOOLEAN                       bAdHocMode;\r
+       //BOOLEAN                       bSlaveOfDMSP;\r
+//--------REMOVED COMMON INFO----------//\r
+\r
+\r
+//1  COMMON INFORMATION\r
+\r
+       //\r
+       // Init Value\r
+       //\r
+//-----------HOOK BEFORE REG INIT-----------// \r
+       // ODM Platform info AP/ADSL/CE/MP = 1/2/3/4\r
+       u1Byte                  SupportPlatform;                \r
+       // ODM Platform info WIN/AP/CE = 1/2/3\r
+       u1Byte                  Normalrxpath;\r
+       // ODM Support Ability DIG/RATR/TX_PWR_TRACK/ Â¡K¡K = 1/2/3/¡K\r
+       u4Byte                  SupportAbility;\r
+       // ODM PCIE/USB/SDIO = 1/2/3\r
+       u1Byte                  SupportInterface;                       \r
+       // ODM composite or independent. Bit oriented/ 92C+92D+ .... or any other type = 1/2/3/...\r
+       u4Byte                  SupportICType;  \r
+       // Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/...\r
+       u1Byte                  CutVersion;\r
+       // Fab Version TSMC/UMC = 0/1\r
+       u1Byte                  FabVersion;\r
+       // RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/...\r
+       u1Byte                  RFType;\r
+       u1Byte                  RFEType;        \r
+       // Board Type Normal/HighPower/MiniCard/SLIM/Combo/... = 0/1/2/3/4/...\r
+       u1Byte                  BoardType;\r
+       u1Byte                  PackageType;\r
+       u2Byte                  TypeGLNA;\r
+       u2Byte                  TypeGPA;\r
+       u2Byte                  TypeALNA;\r
+       u2Byte                  TypeAPA;\r
+       // with external LNA  NO/Yes = 0/1\r
+       u1Byte                  ExtLNA; // 2G\r
+       u1Byte                  ExtLNA5G; //5G\r
+       // with external PA  NO/Yes = 0/1\r
+       u1Byte                  ExtPA; // 2G\r
+       u1Byte                  ExtPA5G; //5G\r
+       // with external TRSW  NO/Yes = 0/1\r
+       u1Byte                  ExtTRSW;\r
+       u1Byte                  ExtLNAGain; // 2G\r
+       u1Byte                  PatchID; //Customer ID\r
+       BOOLEAN                 bInHctTest;\r
+       u1Byte                  WIFITest;\r
+\r
+       BOOLEAN                 bDualMacSmartConcurrent;\r
+       u4Byte                  BK_SupportAbility;\r
+       u1Byte                  AntDivType;\r
+       u1Byte                  with_extenal_ant_switch;\r
+       BOOLEAN                 ConfigBBRF;\r
+       u1Byte                  odm_Regulation2_4G;\r
+       u1Byte                  odm_Regulation5G;\r
+       u1Byte                  IQKFWOffload;\r
+       BOOLEAN                 cck_new_agc;\r
+//-----------HOOK BEFORE REG INIT-----------// \r
+\r
+       //\r
+       // Dynamic Value\r
+       //      \r
+//--------- POINTER REFERENCE-----------//\r
+\r
+       u1Byte                  u1Byte_temp;\r
+       BOOLEAN                 BOOLEAN_temp;\r
+       PADAPTER                PADAPTER_temp;\r
+       \r
+       // MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2\r
+       u1Byte                  *pMacPhyMode;\r
+       //TX Unicast byte count\r
+       u8Byte                  *pNumTxBytesUnicast;\r
+       //RX Unicast byte count\r
+       u8Byte                  *pNumRxBytesUnicast;\r
+       // Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3\r
+       u1Byte                  *pWirelessMode; //ODM_WIRELESS_MODE_E\r
+       // Frequence band 2.4G/5G = 0/1\r
+       u1Byte                  *pBandType;\r
+       // Secondary channel offset don't_care/below/above = 0/1/2\r
+       u1Byte                  *pSecChOffset;\r
+       // Security mode Open/WEP/AES/TKIP = 0/1/2/3\r
+       u1Byte                  *pSecurity;\r
+       // BW info 20M/40M/80M = 0/1/2\r
+       u1Byte                  *pBandWidth;\r
+       // Central channel location Ch1/Ch2/....\r
+       u1Byte                  *pChannel;      //central channel number\r
+       BOOLEAN                 DPK_Done;\r
+       // Common info for 92D DMSP\r
+       \r
+       BOOLEAN                 *pbGetValueFromOtherMac;\r
+       PADAPTER                *pBuddyAdapter;\r
+       BOOLEAN                 *pbMasterOfDMSP; //MAC0: master, MAC1: slave\r
+       // Common info for Status\r
+       BOOLEAN                 *pbScanInProcess;\r
+       BOOLEAN                 *pbPowerSaving;\r
+       // CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E.\r
+       u1Byte                  *pOnePathCCA;\r
+       //pMgntInfo->AntennaTest\r
+       u1Byte                  *pAntennaTest;\r
+       BOOLEAN                 *pbNet_closed;\r
+       //u1Byte                        *pAidMap;\r
+       u1Byte                  *pu1ForcedIgiLb;\r
+       BOOLEAN                 *pIsFcsModeEnable;\r
+/*--------- For 8723B IQK-----------*/\r
+       BOOLEAN                 *pIs1Antenna;\r
+       u1Byte                  *pRFDefaultPath;\r
+       // 0:S1, 1:S0\r
+       \r
+//--------- POINTER REFERENCE-----------//\r
+       pu2Byte                 pForcedDataRate;\r
+       pu1Byte                 HubUsbMode;\r
+       BOOLEAN                 *pbFwDwRsvdPageInProgress;\r
+       u4Byte                  *pCurrentTxTP;\r
+       u4Byte                  *pCurrentRxTP;\r
+       u1Byte                  *pSoundingSeq;\r
+//------------CALL BY VALUE-------------//\r
+       BOOLEAN                 bLinkInProcess;\r
+       BOOLEAN                 bWIFI_Direct;\r
+       BOOLEAN                 bWIFI_Display;\r
+       BOOLEAN                 bLinked;\r
+       BOOLEAN                 bsta_state;\r
+#if(DM_ODM_SUPPORT_TYPE & ODM_AP)              // for repeater mode add by YuChen 2014.06.23\r
+#ifdef UNIVERSAL_REPEATER\r
+       BOOLEAN                 VXD_bLinked;\r
+#endif\r
+#endif                                                                 // for repeater mode add by YuChen 2014.06.23   \r
+       u1Byte                  RSSI_Min;       \r
+       u1Byte                  InterfaceIndex; /*Add for 92D  dual MAC: 0--Mac0 1--Mac1*/\r
+       BOOLEAN                 bIsMPChip;\r
+       BOOLEAN                 bOneEntryOnly;\r
+       BOOLEAN                 mp_mode;\r
+       u4Byte                  OneEntry_MACID;\r
+       u1Byte                  pre_number_linked_client;       \r
+       u1Byte                  number_linked_client;\r
+       u1Byte                  pre_number_active_client;       \r
+       u1Byte                  number_active_client;\r
+       // Common info for BTDM\r
+       BOOLEAN                 bBtEnabled;                     // BT is enabled\r
+       BOOLEAN                 bBtConnectProcess;      // BT HS is under connection progress.\r
+       u1Byte                  btHsRssi;                               // BT HS mode wifi rssi value.\r
+       BOOLEAN                 bBtHsOperation;         // BT HS mode is under progress\r
+       u1Byte                  btHsDigVal;                     // use BT rssi to decide the DIG value\r
+       BOOLEAN                 bBtDisableEdcaTurbo;    // Under some condition, don't enable the EDCA Turbo\r
+       BOOLEAN                 bBtBusy;                        // BT is busy.\r
+       BOOLEAN                 bBtLimitedDig;                  // BT is busy.\r
+       BOOLEAN                 bDisablePhyApi;\r
+//------------CALL BY VALUE-------------//\r
+       u1Byte                  RSSI_A;\r
+       u1Byte                  RSSI_B;\r
+       u1Byte                  RSSI_C;\r
+       u1Byte                  RSSI_D;\r
+       u8Byte                  RSSI_TRSW;      \r
+       u8Byte                  RSSI_TRSW_H;\r
+       u8Byte                  RSSI_TRSW_L;    \r
+       u8Byte                  RSSI_TRSW_iso;\r
+       u1Byte                  TXAntStatus;\r
+       u1Byte                  RXAntStatus;\r
+       u1Byte                  cck_lna_idx;\r
+       u1Byte                  cck_vga_idx;\r
+       u1Byte                  curr_station_id;\r
+       u1Byte                  ofdm_agc_idx[4];\r
+\r
+       u1Byte                  RxRate;\r
+       BOOLEAN                 bNoisyState;\r
+       u1Byte                  TxRate;\r
+       u1Byte                  LinkedInterval;\r
+       u1Byte                  preChannel;\r
+       u4Byte                  TxagcOffsetValueA;\r
+       BOOLEAN                 IsTxagcOffsetPositiveA;\r
+       u4Byte                  TxagcOffsetValueB;\r
+       BOOLEAN                 IsTxagcOffsetPositiveB;\r
+       u4Byte                  tx_tp;\r
+       u4Byte                  rx_tp;\r
+       u4Byte                  total_tp;\r
+       u8Byte                  curTxOkCnt;\r
+       u8Byte                  curRxOkCnt;     \r
+       u8Byte                  lastTxOkCnt;\r
+       u8Byte                  lastRxOkCnt;\r
+       u4Byte                  BbSwingOffsetA;\r
+       BOOLEAN                 IsBbSwingOffsetPositiveA;\r
+       u4Byte                  BbSwingOffsetB;\r
+       BOOLEAN                 IsBbSwingOffsetPositiveB;\r
+       u1Byte                  IGI_LowerBound;\r
+       u1Byte                  IGI_UpperBound;\r
+       u1Byte                  antdiv_rssi;\r
+       u1Byte                  fat_comb_a;\r
+       u1Byte                  fat_comb_b;\r
+       u1Byte                  antdiv_intvl;\r
+       u1Byte                  AntType;\r
+       u1Byte                  pre_AntType;\r
+       u1Byte                  antdiv_period;\r
+       u1Byte                  evm_antdiv_period;\r
+       u1Byte                  antdiv_select;\r
+       u1Byte                  path_select;    \r
+       u1Byte                  antdiv_evm_en;\r
+       u1Byte                  bdc_holdstate;\r
+       u1Byte                  NdpaPeriod;\r
+       BOOLEAN                 H2C_RARpt_connect;\r
+       BOOLEAN                 cck_agc_report_type;\r
+       \r
+       u1Byte                  dm_dig_max_TH;\r
+       u1Byte                  dm_dig_min_TH;\r
+       u1Byte                  print_agc;\r
+       u1Byte                  TrafficLoad;\r
+       u1Byte                  pre_TrafficLoad;\r
+\r
+\r
+       //For Adaptivtiy\r
+       u2Byte                  NHM_cnt_0;\r
+       u2Byte                  NHM_cnt_1;\r
+       s1Byte                  TH_L2H_default;\r
+       s1Byte                  TH_EDCCA_HL_diff_default;\r
+       s1Byte                  TH_L2H_ini;\r
+       s1Byte                  TH_EDCCA_HL_diff;\r
+       s1Byte                  TH_L2H_ini_mode2;\r
+       s1Byte                  TH_EDCCA_HL_diff_mode2;\r
+       BOOLEAN                 Carrier_Sense_enable;\r
+       u1Byte                  Adaptivity_IGI_upper;\r
+       BOOLEAN                 adaptivity_flag;\r
+       u1Byte                  DCbackoff;\r
+       BOOLEAN                 Adaptivity_enable;\r
+       u1Byte                  APTotalNum;\r
+       BOOLEAN                 EDCCA_enable;\r
+       ADAPTIVITY_STATISTICS   Adaptivity;\r
+       //For Adaptivtiy\r
+       u1Byte                  LastUSBHub;\r
+       u1Byte                  TxBfDataRate;\r
+\r
+       u1Byte                  nbi_set_result;\r
+       \r
+       u1Byte                  c2h_cmd_start;\r
+       u1Byte                  fw_debug_trace[60]; \r
+       u1Byte                  pre_c2h_seq;\r
+       BOOLEAN                 fw_buff_is_enpty;\r
+       u4Byte                  data_frame_num;\r
+\r
+       /*for noise detection*/\r
+       BOOLEAN                 NoisyDecision; /*b_noisy*/\r
+       BOOLEAN                 pre_b_noisy;    \r
+       u4Byte                  NoisyDecision_Smooth;\r
+\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_CE|ODM_WIN))\r
+       ODM_NOISE_MONITOR noise_level;//[ODM_MAX_CHANNEL_NUM];\r
+#endif\r
+       //\r
+       //2 Define STA info.\r
+       // _ODM_STA_INFO\r
+       // 2012/01/12 MH For MP, we need to reduce one array pointer for default port.??\r
+       PSTA_INFO_T             pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];\r
+       u2Byte                  platform2phydm_macid_table[ODM_ASSOCIATE_ENTRY_NUM];            /* platform_macid_table[platform_macid] = phydm_macid */\r
+#if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)\r
+       s4Byte                  AccumulatePWDB[ODM_ASSOCIATE_ENTRY_NUM];\r
+#endif\r
+\r
+#if (RATE_ADAPTIVE_SUPPORT == 1)\r
+       u2Byte                  CurrminRptTime;\r
+       ODM_RA_INFO_T   RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; //Use MacID as array index. STA MacID=0, VWiFi Client MacID={1, ODM_ASSOCIATE_ENTRY_NUM-1} //YJ,add,120119\r
+#endif\r
+       //\r
+       // 2012/02/14 MH Add to share 88E ra with other SW team.\r
+       // We need to colelct all support abilit to a proper area.\r
+       //\r
+       BOOLEAN                         RaSupport88E;\r
+\r
+       // Define ...........\r
+\r
+       // Latest packet phy info (ODM write)\r
+       ODM_PHY_DBG_INFO_T       PhyDbgInfo;\r
+       //PHY_INFO_88E          PhyInfo;\r
+\r
+       // Latest packet phy info (ODM write)\r
+       ODM_MAC_INFO            *pMacInfo;\r
+       //MAC_INFO_88E          MacInfo;\r
+\r
+       // Different Team independt structure??\r
+\r
+       //\r
+       //TX_RTP_CMN            TX_retrpo;\r
+       //TX_RTP_88E            TX_retrpo;\r
+       //TX_RTP_8195           TX_retrpo;\r
+\r
+       //\r
+       //ODM Structure\r
+       //\r
+#if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY))\r
+       #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))\r
+       BDC_T                                   DM_BdcTable;\r
+       #endif\r
+       \r
+       #ifdef CONFIG_HL_SMART_ANTENNA_TYPE1\r
+       SAT_T                                           dm_sat_table;\r
+       #endif\r
+       \r
+#endif\r
+       FAT_T                                           DM_FatTable;\r
+       DIG_T                                           DM_DigTable;\r
+\r
+       PS_T                                            DM_PSTable;\r
+       Pri_CCA_T                                       DM_PriCCA;\r
+       RA_T                                            DM_RA_Table;  \r
+       FALSE_ALARM_STATISTICS          FalseAlmCnt;\r
+       FALSE_ALARM_STATISTICS          FlaseAlmCntBuddyAdapter;\r
+       SWAT_T                                          DM_SWAT_Table;\r
+       CFO_TRACKING                                    DM_CfoTrack;\r
+       ACS                                                     DM_ACS;\r
+       CCX_INFO                                        DM_CCX_INFO;\r
+#if (PHYDM_LA_MODE_SUPPORT == 1)\r
+       RT_ADCSMP                                       adcsmp;\r
+#endif\r
+\r
+#if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)\r
+       IQK_INFO        IQK_info;\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
+       //Path Div Struct\r
+       PATHDIV_PARA    pathIQK;\r
+#endif\r
+#if(defined(CONFIG_PATH_DIVERSITY))\r
+       PATHDIV_T       DM_PathDiv;\r
+#endif \r
+\r
+       EDCA_T          DM_EDCA_Table;\r
+       u4Byte          WMMEDCA_BE;\r
+\r
+       // Copy from SD4 structure\r
+       //\r
+       // ==================================================\r
+       //\r
+\r
+       //common\r
+       //u1Byte                DM_Type;        \r
+       //u1Byte    PSD_Report_RXHP[80];   // Add By Gary\r
+       //u1Byte    PSD_func_flag;               // Add By Gary\r
+       //for DIG\r
+       //u1Byte                bDMInitialGainEnable;\r
+       //u1Byte                binitialized; // for dm_initial_gain_Multi_STA use.\r
+\r
+       BOOLEAN                 *pbDriverStopped;\r
+       BOOLEAN                 *pbDriverIsGoingToPnpSetPowerSleep;\r
+       BOOLEAN                 *pinit_adpt_in_progress;\r
+\r
+       //PSD\r
+       BOOLEAN                 bUserAssignLevel;\r
+       u1Byte                  RSSI_BT;                                /*come from BT*/\r
+       BOOLEAN                 bPSDinProcess;\r
+       BOOLEAN                 bPSDactive;\r
+       BOOLEAN                 bDMInitialGainEnable;\r
+\r
+       //MPT DIG\r
+       RT_TIMER                MPT_DIGTimer;\r
+       \r
+       //for rate adaptive, in fact,  88c/92c fw will handle this\r
+       u1Byte                  bUseRAMask;\r
+\r
+       ODM_RATE_ADAPTIVE       RateAdaptive;\r
+       #if (defined(CONFIG_ANT_DETECTION))\r
+       ANT_DETECTED_INFO       AntDetectedInfo;        /* Antenna detected information for RSSI tool*/\r
+       #endif\r
+       ODM_RF_CAL_T    RFCalibrateInfo;\r
+       u4Byte                  nIQK_Cnt;\r
+       u4Byte                  nIQK_OK_Cnt;\r
+       u4Byte                  nIQK_Fail_Cnt;\r
+\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))  \r
+       //\r
+       // Power Training\r
+       //\r
+       u1Byte                  ForcePowerTrainingState;\r
+       BOOLEAN                 bChangeState;\r
+       u4Byte                  PT_score;\r
+       u8Byte                  OFDM_RX_Cnt;\r
+       u8Byte                  CCK_RX_Cnt;\r
+#endif\r
+       BOOLEAN                 bDisablePowerTraining;\r
+       u1Byte                  DynamicTxHighPowerLvl;\r
+       u1Byte                  LastDTPLvl;\r
+       u4Byte                  tx_agc_ofdm_18_6;\r
+       u1Byte                  rx_pkt_type;\r
+\r
+       //\r
+       // ODM system resource.\r
+       //\r
+\r
+       // ODM relative time.\r
+       RT_TIMER        PathDivSwitchTimer;\r
+       //2011.09.27 add for Path Diversity\r
+       RT_TIMER        CCKPathDiversityTimer;\r
+       RT_TIMER        FastAntTrainingTimer;\r
+       #ifdef ODM_EVM_ENHANCE_ANTDIV\r
+       RT_TIMER                        EVM_FastAntTrainingTimer;\r
+       #endif\r
+       RT_TIMER                sbdcnt_timer;\r
+\r
+       // ODM relative workitem.\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+#if USE_WORKITEM\r
+       RT_WORK_ITEM                    PathDivSwitchWorkitem;\r
+       RT_WORK_ITEM                    CCKPathDiversityWorkitem;\r
+       RT_WORK_ITEM                    FastAntTrainingWorkitem;\r
+       RT_WORK_ITEM                    MPT_DIGWorkitem;\r
+       RT_WORK_ITEM                    RaRptWorkitem;\r
+       RT_WORK_ITEM                    sbdcnt_workitem;\r
+#endif\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE))\r
+#if (BEAMFORMING_SUPPORT == 1)\r
+       RT_BEAMFORMING_INFO BeamformingInfo;\r
+#endif \r
+#endif\r
+\r
+#ifdef CONFIG_PHYDM_DFS_MASTER\r
+       u1Byte DFS_RegionDomain;\r
+       pu1Byte dfs_master_enabled;\r
+\r
+       /*====== phydm_radar_detect_with_dbg_parm start ======*/\r
+       u1Byte radar_detect_dbg_parm_en;\r
+       u4Byte radar_detect_reg_918;\r
+       u4Byte radar_detect_reg_91c;\r
+       u4Byte radar_detect_reg_920;\r
+       u4Byte radar_detect_reg_924;\r
+       /*====== phydm_radar_detect_with_dbg_parm end ======*/\r
+#endif\r
+\r
+#if(DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
+       \r
+#if (RT_PLATFORM != PLATFORM_LINUX)\r
+} DM_ODM_T, *PDM_ODM_T;                // DM_Dynamic_Mechanism_Structure\r
+#else\r
+};\r
+#endif \r
+\r
+#else// for AP,ADSL,CE Team\r
+} DM_ODM_T, *PDM_ODM_T;                // DM_Dynamic_Mechanism_Structure\r
+#endif\r
+\r
+\r
+typedef enum _PHYDM_STRUCTURE_TYPE{\r
+       PHYDM_FALSEALMCNT,\r
+       PHYDM_CFOTRACK,\r
+       PHYDM_ADAPTIVITY,\r
+       PHYDM_ROMINFO,\r
+       \r
+}PHYDM_STRUCTURE_TYPE;\r
+\r
+\r
+\r
+ typedef enum _ODM_RF_CONTENT{\r
+       odm_radioa_txt = 0x1000,\r
+       odm_radiob_txt = 0x1001,\r
+       odm_radioc_txt = 0x1002,\r
+       odm_radiod_txt = 0x1003\r
+} ODM_RF_CONTENT;\r
+\r
+typedef enum _ODM_BB_Config_Type{\r
+       CONFIG_BB_PHY_REG,   \r
+       CONFIG_BB_AGC_TAB,   \r
+       CONFIG_BB_AGC_TAB_2G,\r
+       CONFIG_BB_AGC_TAB_5G, \r
+       CONFIG_BB_PHY_REG_PG,\r
+       CONFIG_BB_PHY_REG_MP,\r
+       CONFIG_BB_AGC_TAB_DIFF,\r
+} ODM_BB_Config_Type, *PODM_BB_Config_Type;\r
+\r
+typedef enum _ODM_RF_Config_Type{ \r
+       CONFIG_RF_RADIO,\r
+    CONFIG_RF_TXPWR_LMT,\r
+} ODM_RF_Config_Type, *PODM_RF_Config_Type;\r
+\r
+typedef enum _ODM_FW_Config_Type{\r
+    CONFIG_FW_NIC,\r
+    CONFIG_FW_NIC_2,\r
+    CONFIG_FW_AP,\r
+    CONFIG_FW_AP_2,\r
+    CONFIG_FW_MP,\r
+    CONFIG_FW_WoWLAN,\r
+    CONFIG_FW_WoWLAN_2,\r
+    CONFIG_FW_AP_WoWLAN,\r
+    CONFIG_FW_BT,\r
+} ODM_FW_Config_Type;\r
+\r
+// Status code\r
+#if (DM_ODM_SUPPORT_TYPE != ODM_WIN)\r
+typedef enum _RT_STATUS{\r
+       RT_STATUS_SUCCESS,\r
+       RT_STATUS_FAILURE,\r
+       RT_STATUS_PENDING,\r
+       RT_STATUS_RESOURCE,\r
+       RT_STATUS_INVALID_CONTEXT,\r
+       RT_STATUS_INVALID_PARAMETER,\r
+       RT_STATUS_NOT_SUPPORT,\r
+       RT_STATUS_OS_API_FAILED,\r
+}RT_STATUS,*PRT_STATUS;\r
+#endif // end of RT_STATUS definition\r
+\r
+#ifdef REMOVE_PACK\r
+#pragma pack()\r
+#endif\r
+\r
+//3===========================================================\r
+//3 AGC RX High Power Mode\r
+//3===========================================================\r
+#define          LNA_Low_Gain_1                      0x64\r
+#define          LNA_Low_Gain_2                      0x5A\r
+#define          LNA_Low_Gain_3                      0x58\r
+\r
+#define          FA_RXHP_TH1                           5000\r
+#define          FA_RXHP_TH2                           1500\r
+#define          FA_RXHP_TH3                             800\r
+#define          FA_RXHP_TH4                             600\r
+#define          FA_RXHP_TH5                             500\r
+\r
+typedef enum tag_1R_CCA_Type_Definition\r
+{\r
+       CCA_1R =0,\r
+       CCA_2R = 1,\r
+       CCA_MAX = 2,\r
+}DM_1R_CCA_E;\r
+\r
+typedef enum tag_RF_Type_Definition\r
+{\r
+       RF_Save =0,\r
+       RF_Normal = 1,\r
+       RF_MAX = 2,\r
+}DM_RF_E;\r
+\r
+//\r
+// check Sta pointer valid or not\r
+//\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_AP))\r
+#define IS_STA_VALID(pSta)             (pSta && pSta->expire_to)\r
+#elif (DM_ODM_SUPPORT_TYPE & ODM_WIN)\r
+#define IS_STA_VALID(pSta)             (pSta && pSta->bUsed)\r
+#else\r
+#define IS_STA_VALID(pSta)             (pSta)\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_AP))\r
+\r
+BOOLEAN\r
+ODM_CheckPowerStatus(\r
+       IN      PADAPTER                Adapter\r
+       );\r
+\r
+#endif\r
+\r
+\r
+\r
+u4Byte odm_ConvertTo_dB(u4Byte Value);\r
+\r
+u4Byte odm_ConvertTo_linear(u4Byte Value);\r
+\r
+#if((DM_ODM_SUPPORT_TYPE==ODM_WIN)||(DM_ODM_SUPPORT_TYPE==ODM_CE))\r
+\r
+u4Byte\r
+GetPSDData(\r
+       PDM_ODM_T       pDM_Odm,\r
+       unsigned int    point,\r
+       u1Byte initial_gain_psd);\r
+\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE & ODM_WIN)    \r
+VOID\r
+ODM_DMWatchdog_LPS(\r
+       IN              PDM_ODM_T               pDM_Odm\r
+);\r
+#endif\r
+\r
+\r
+s4Byte\r
+ODM_PWdB_Conversion(\r
+    IN  s4Byte X,\r
+    IN  u4Byte TotalBit,\r
+    IN  u4Byte DecimalBit\r
+    );\r
+\r
+s4Byte\r
+ODM_SignConversion(\r
+    IN  s4Byte value,\r
+    IN  u4Byte TotalBit\r
+    );\r
+\r
+void\r
+phydm_seq_sorting( \r
+       IN              PVOID   pDM_VOID,\r
+       IN OUT  u4Byte  *p_value,\r
+       IN OUT  u4Byte  *rank_idx,      \r
+       IN OUT  u4Byte  *p_idx_out,     \r
+       IN              u1Byte  seq_length\r
+);\r
+\r
+VOID \r
+ODM_DMInit(\r
+ IN    PDM_ODM_T       pDM_Odm\r
+);\r
+\r
+VOID\r
+ODM_DMReset(\r
+       IN      PDM_ODM_T       pDM_Odm\r
+       );\r
+\r
+VOID\r
+phydm_support_ability_debug(\r
+       IN              PVOID           pDM_VOID,\r
+       IN              u4Byte          *const dm_value,\r
+       IN              u4Byte                  *_used,\r
+       OUT             char                            *output,\r
+       IN              u4Byte                  *_out_len\r
+       );\r
+\r
+VOID\r
+phydm_config_trx_path(\r
+       IN              PVOID           pDM_VOID,\r
+       IN              u4Byte          *const dm_value,\r
+       IN              u4Byte                  *_used,\r
+       OUT             char                    *output,\r
+       IN              u4Byte                  *_out_len\r
+       );\r
+\r
+VOID\r
+ODM_DMWatchdog(\r
+       IN              PDM_ODM_T                       pDM_Odm                 // For common use in the future\r
+       );\r
+\r
+VOID\r
+ODM_CmnInfoInit(\r
+       IN              PDM_ODM_T               pDM_Odm,\r
+       IN              ODM_CMNINFO_E   CmnInfo,\r
+       IN              u4Byte                  Value   \r
+       );\r
+\r
+VOID\r
+ODM_CmnInfoHook(\r
+       IN              PDM_ODM_T               pDM_Odm,\r
+       IN              ODM_CMNINFO_E   CmnInfo,\r
+       IN              PVOID                   pValue  \r
+       );\r
+\r
+VOID\r
+ODM_CmnInfoPtrArrayHook(\r
+       IN              PDM_ODM_T               pDM_Odm,\r
+       IN              ODM_CMNINFO_E   CmnInfo,\r
+       IN              u2Byte                  Index,\r
+       IN              PVOID                   pValue  \r
+       );\r
+\r
+VOID\r
+ODM_CmnInfoUpdate(\r
+       IN              PDM_ODM_T               pDM_Odm,\r
+       IN              u4Byte                  CmnInfo,\r
+       IN              u8Byte                  Value   \r
+       );\r
+\r
+#if(DM_ODM_SUPPORT_TYPE==ODM_AP)\r
+VOID \r
+ODM_InitAllThreads(\r
+    IN PDM_ODM_T       pDM_Odm \r
+    );\r
+\r
+VOID\r
+ODM_StopAllThreads(\r
+       IN PDM_ODM_T    pDM_Odm \r
+       );\r
+#endif\r
+\r
+VOID \r
+ODM_InitAllTimers(\r
+    IN PDM_ODM_T       pDM_Odm \r
+    );\r
+\r
+VOID \r
+ODM_CancelAllTimers(\r
+    IN PDM_ODM_T    pDM_Odm \r
+    );\r
+\r
+VOID\r
+ODM_ReleaseAllTimers(\r
+    IN PDM_ODM_T       pDM_Odm \r
+    );\r
+\r
+\r
+\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+VOID ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm );\r
+VOID ODM_FreeAllWorkItems(IN PDM_ODM_T pDM_Odm );\r
+\r
+\r
+\r
+u8Byte\r
+PlatformDivision64(\r
+       IN u8Byte       x,\r
+       IN u8Byte       y\r
+);\r
+\r
+//====================================================\r
+//3 PathDiV End\r
+//====================================================\r
+\r
+\r
+#define DM_ChangeDynamicInitGainThresh         ODM_ChangeDynamicInitGainThresh\r
+\r
+typedef enum tag_DIG_Connect_Definition\r
+{\r
+       DIG_STA_DISCONNECT = 0, \r
+       DIG_STA_CONNECT = 1,\r
+       DIG_STA_BEFORE_CONNECT = 2,\r
+       DIG_MultiSTA_DISCONNECT = 3,\r
+       DIG_MultiSTA_CONNECT = 4,\r
+       DIG_CONNECT_MAX\r
+}DM_DIG_CONNECT_E;\r
+\r
+\r
+//\r
+// 2012/01/12 MH Check afapter status. Temp fix BSOD.\r
+//\r
+#define        HAL_ADAPTER_STS_CHK(pDM_Odm)\\r
+       if (pDM_Odm->Adapter == NULL)\\r
+       {\\r
+               return;\\r
+       }\\r
+\r
+#endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+\r
+VOID\r
+ODM_AsocEntry_Init(\r
+       IN              PDM_ODM_T               pDM_Odm\r
+       );\r
+\r
+\r
+PVOID\r
+PhyDM_Get_Structure(\r
+       IN              PDM_ODM_T               pDM_Odm,\r
+       IN              u1Byte                  Structure_Type\r
+);\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) ||(DM_ODM_SUPPORT_TYPE == ODM_CE)\r
+/*===========================================================*/\r
+/* The following is for compile only*/\r
+/*===========================================================*/\r
+\r
+#define        IS_HARDWARE_TYPE_8723A(_Adapter)                        FALSE\r
+#define        IS_HARDWARE_TYPE_8723AE(_Adapter)                       FALSE\r
+#define        IS_HARDWARE_TYPE_8192C(_Adapter)                        FALSE\r
+#define        IS_HARDWARE_TYPE_8192D(_Adapter)                        FALSE\r
+#define        RF_T_METER_92D                                  0x42\r
+\r
+\r
+#define GET_RX_STATUS_DESC_RX_MCS(__pRxStatusDesc)                             LE_BITS_TO_1BYTE( __pRxStatusDesc+12, 0, 6)\r
+\r
+#define                rConfig_ram64x16                                0xb2c\r
+\r
+#define TARGET_CHNL_NUM_2G_5G  59\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
+u1Byte GetRightChnlPlaceforIQK(u1Byte chnl);\r
+#endif\r
+\r
+//===========================================================\r
+#endif\r
+\r
+#if (DM_ODM_SUPPORT_TYPE == ODM_CE)\r
+void odm_dtc(PDM_ODM_T pDM_Odm);\r
+#endif /* #if (DM_ODM_SUPPORT_TYPE == ODM_CE) */\r
+\r
+\r
+VOID phydm_NoisyDetection(IN   PDM_ODM_T       pDM_Odm );\r
+\r
+\r
+#endif\r
+\r
+VOID\r
+phydm_set_ext_switch(\r
+       IN              PVOID           pDM_VOID,\r
+       IN              u4Byte          *const dm_value,\r
+       IN              u4Byte          *_used,\r
+       OUT             char                    *output,\r
+       IN              u4Byte          *_out_len       \r
+);\r
+\r
+VOID\r
+phydm_api_debug(\r
+       IN              PVOID           pDM_VOID,\r
+       IN              u4Byte          function_map,\r
+       IN              u4Byte          *const dm_value,\r
+       IN              u4Byte          *_used,\r
+       OUT             char                    *output,\r
+       IN              u4Byte          *_out_len\r
+);\r
+\r
+u1Byte\r
+phydm_nbi_setting(\r
+       IN              PVOID           pDM_VOID,\r
+       IN              u4Byte          enable,\r
+       IN              u4Byte          channel,\r
+       IN              u4Byte          bw,\r
+       IN              u4Byte          f_interference,\r
+       IN              u4Byte          Second_ch\r
+);\r
+\r