summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h')
-rwxr-xr-xdrivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h905
1 files changed, 905 insertions, 0 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h b/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h
new file mode 100755
index 000000000000..7b7ecfc7ed6a
--- /dev/null
+++ b/drivers/net/wireless/rtlwifi/rtl8723as/hal/OUTSRC/odm_debug.h
@@ -0,0 +1,905 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/
+
+
+#ifndef __ODM_DBG_H__
+#define __ODM_DBG_H__
+
+
+//-----------------------------------------------------------------------------
+// Define the debug levels
+//
+// 1. DBG_TRACE and DBG_LOUD are used for normal cases.
+// So that, they can help SW engineer to develope or trace states changed
+// and also help HW enginner to trace every operation to and from HW,
+// e.g IO, Tx, Rx.
+//
+// 2. DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases,
+// which help us to debug SW or HW.
+//
+//-----------------------------------------------------------------------------
+//
+// Never used in a call to ODM_RT_TRACE()!
+//
+#define ODM_DBG_OFF 1
+
+//
+// Fatal bug.
+// For example, Tx/Rx/IO locked up, OS hangs, memory access violation,
+// resource allocation failed, unexpected HW behavior, HW BUG and so on.
+//
+#define ODM_DBG_SERIOUS 2
+
+//
+// Abnormal, rare, or unexpeted cases.
+// For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.
+//
+#define ODM_DBG_WARNING 3
+
+//
+// Normal case with useful information about current SW or HW state.
+// For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status,
+// SW protocol state change, dynamic mechanism state change and so on.
+//
+#define ODM_DBG_LOUD 4
+
+//
+// Normal case with detail execution flow or information.
+//
+#define ODM_DBG_TRACE 5
+
+//-----------------------------------------------------------------------------
+// Define the tracing components
+//
+//-----------------------------------------------------------------------------
+//BB Functions
+#define ODM_COMP_DIG BIT0
+#define ODM_COMP_RA_MASK BIT1
+#define ODM_COMP_DYNAMIC_TXPWR BIT2
+#define ODM_COMP_FA_CNT BIT3
+#define ODM_COMP_RSSI_MONITOR BIT4
+#define ODM_COMP_CCK_PD BIT5
+#define ODM_COMP_ANT_DIV BIT6
+#define ODM_COMP_PWR_SAVE BIT7
+#define ODM_COMP_PWR_TRAIN BIT8
+#define ODM_COMP_RATE_ADAPTIVE BIT9
+#define ODM_COMP_PATH_DIV BIT10
+#define ODM_COMP_PSD BIT11
+#define ODM_COMP_DYNAMIC_PRICCA BIT12
+#define ODM_COMP_RXHP BIT13
+//MAC Functions
+#define ODM_COMP_EDCA_TURBO BIT16
+#define ODM_COMP_EARLY_MODE BIT17
+//RF Functions
+#define ODM_COMP_TX_PWR_TRACK BIT24
+#define ODM_COMP_RX_GAIN_TRACK BIT25
+#define ODM_COMP_CALIBRATION BIT26
+//Common Functions
+#define ODM_COMP_COMMON BIT30
+#define ODM_COMP_INIT BIT31
+
+/*------------------------Export Marco Definition---------------------------*/
+#if (DM_ODM_SUPPORT_TYPE == ODM_MP)
+#define RT_PRINTK DbgPrint
+#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
+ #define DbgPrint printk
+ #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);
+#else
+ #define DbgPrint panic_printk
+#define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);
+#endif
+
+#ifndef ASSERT
+ #define ASSERT(expr)
+#endif
+
+#if DBG
+#define ODM_RT_TRACE(pDM_Odm, comp, level, fmt) \
+ if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
+ { \
+ if(pDM_Odm->SupportICType == ODM_RTL8192C) \
+ DbgPrint("[ODM-92C] "); \
+ else if(pDM_Odm->SupportICType == ODM_RTL8192D) \
+ DbgPrint("[ODM-92D] "); \
+ else if(pDM_Odm->SupportICType == ODM_RTL8723A) \
+ DbgPrint("[ODM-8723A] "); \
+ else if(pDM_Odm->SupportICType == ODM_RTL8188E) \
+ DbgPrint("[ODM-8188E] "); \
+ else if(pDM_Odm->SupportICType == ODM_RTL8812) \
+ DbgPrint("[ODM-8812] "); \
+ else if(pDM_Odm->SupportICType == ODM_RTL8821) \
+ DbgPrint("[ODM-8821] "); \
+ RT_PRINTK fmt; \
+ }
+
+#define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt) \
+ if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
+ { \
+ RT_PRINTK fmt; \
+ }
+
+#define ODM_RT_ASSERT(pDM_Odm, expr, fmt) \
+ if(!(expr)) { \
+ DbgPrint( "Assertion failed! %s at ......\n", #expr); \
+ DbgPrint( " ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__); \
+ RT_PRINTK fmt; \
+ ASSERT(FALSE); \
+ }
+#define ODM_dbg_enter() { DbgPrint("==> %s\n", __FUNCTION__); }
+#define ODM_dbg_exit() { DbgPrint("<== %s\n", __FUNCTION__); }
+#define ODM_dbg_trace(str) { DbgPrint("%s:%s\n", __FUNCTION__, str); }
+
+#define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr) \
+ if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
+ { \
+ int __i; \
+ pu1Byte __ptr = (pu1Byte)ptr; \
+ DbgPrint("[ODM] "); \
+ DbgPrint(title_str); \
+ DbgPrint(" "); \
+ for( __i=0; __i<6; __i++ ) \
+ DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-"); \
+ DbgPrint("\n"); \
+ }
+#else
+#define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)
+#define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)
+#define ODM_RT_ASSERT(pDM_Odm, expr, fmt)
+#define ODM_dbg_enter()
+#define ODM_dbg_exit()
+#define ODM_dbg_trace(str)
+#define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)
+#endif
+
+
+VOID
+ODM_InitDebugSetting(
+ IN PDM_ODM_T pDM_Odm
+ );
+
+
+
+#if 0
+#if DBG
+#define DbgPrint printk
+
+#define PRINT_DATA(_TitleString, _HexData, _HexDataLen) \
+ { \
+ char *szTitle = _TitleString; \
+ pu1Byte pbtHexData = _HexData; \
+ u4Byte u4bHexDataLen = _HexDataLen; \
+ u4Byte __i; \
+ DbgPrint("%s", szTitle); \
+ for (__i=0;__i<u4bHexDataLen;__i++) \
+ { \
+ if ((__i & 15) == 0) \
+ { \
+ DbgPrint("\n"); \
+ } \
+ DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? " " : " ") ); \
+ } \
+ DbgPrint("\n"); \
+ }
+
+// RT_PRINT_XXX macros: implemented for debugging purpose.
+// Added by Annie, 2005-11-21.
+#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \
+ if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
+ { \
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_HexData; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ for( __i=0; __i<(int)_HexDataLen; __i++ ) \
+ { \
+ DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" "); \
+ if (((__i + 1) % 16) == 0) DbgPrint("\n"); \
+ } \
+ DbgPrint("\n"); \
+ }
+
+#define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr) \
+ if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
+ { \
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_Ptr; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint(" "); \
+ for( __i=0; __i<6; __i++ ) \
+ DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
+ DbgPrint("\n"); \
+ }
+
+#define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum) \
+ if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
+ { \
+ int __i, __j; \
+ pu1Byte ptr = (pu1Byte)_Ptr; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint("\n"); \
+ for( __i=0; __i<(int)_AddNum; __i++ ) \
+ { \
+ for( __j=0; __j<6; __j++ ) \
+ DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-"); \
+ DbgPrint("\n"); \
+ } \
+ }
+
+// Added by Annie, 2005-11-22.
+#define MAX_STR_LEN 64
+#define PRINTABLE(_ch) (_ch>=' ' &&_ch<='~' ) // I want to see ASCII 33 to 126 only. Otherwise, I print '?'. Annie, 2005-11-22.
+
+#define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len) \
+ if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
+ { \
+ int __i; \
+ u1Byte buffer[MAX_STR_LEN]; \
+ int length = (_Len<MAX_STR_LEN)? _Len : (MAX_STR_LEN-1) ; \
+ PlatformZeroMemory( buffer, MAX_STR_LEN ); \
+ PlatformMoveMemory( buffer, (pu1Byte)_Ptr, length ); \
+ for( __i=0; __i<MAX_STR_LEN; __i++ ) \
+ { \
+ if( !PRINTABLE(buffer[__i]) ) buffer[__i] = '?'; \
+ } \
+ buffer[length] = '\0'; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint(": %d, <%s>\n", _Len, buffer); \
+ }
+
+#else // of #if DBG
+#define DbgPrint(...)
+#define PRINT_DATA(_TitleString, _HexData, _HexDataLen)
+#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen)
+#define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)
+#define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)
+#define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)
+#endif // of #if DBG
+
+#endif
+
+
+#if 0
+/* Define debug print header for every service module.*/
+typedef struct tag_ODM_DBGP_Service_Module_Header_Name_Structure
+{
+ const char *pMANS;
+ const char *pRTOS;
+ const char *pALM;
+ const char *pPEM;
+ const char *pCMPK;
+ const char *pRAPD;
+ const char *pTXPB;
+ const char *pQUMG;
+}ODM_DBGP_HEAD_T;
+
+
+/* Define different debug flag for dedicated service modules in debug flag array. */
+// Each module has independt 32 bit debug flag you cnn define the flag as yout require.
+typedef enum tag_ODM_DBGP_Flag_Type_Definition
+{
+ ODM_FTX = 0,
+ ODM_FRX ,
+ ODM_FPHY ,
+ ODM_FPWR ,
+ ODM_FDM ,
+ ODM_FC2H ,
+ ODM_FBT ,
+ ODM_DBGP_TYPE_MAX
+}ODM_DBGP_FLAG_E;
+
+
+// Define TX relative debug bit --> FTX
+#define ODM_TX_DESC BIT0
+#define ODM_TX_DESC_TID BIT1
+#define ODM_TX_PATH BIT2
+
+// Define RX relative debug bit --> FRX
+#define ODM_RX_DATA BIT0
+#define ODM_RX_PHY_STS BIT1
+#define ODM_RX_PHY_SS BIT2
+#define ODM_RX_PHY_SQ BIT3
+#define ODM_RX_PHY_ASTS BIT4
+#define ODM_RX_ERR_LEN BIT5
+#define ODM_RX_DEFRAG BIT6
+#define ODM_RX_ERR_RATE BIT7
+#define ODM_RX_PATH BIT8
+#define ODM_RX_BEACON BIT9
+
+// Define PHY-BB/RF/MAC check module bit --> FPHY
+#define ODM_PHY_BBR BIT0
+#define ODM_PHY_BBW BIT1
+#define ODM_PHY_RFR BIT2
+#define ODM_PHY_RFW BIT3
+#define ODM_PHY_MACR BIT4
+#define ODM_PHY_MACW BIT5
+#define ODM_PHY_ALLR BIT6
+#define ODM_PHY_ALLW BIT7
+#define ODM_PHY_TXPWR BIT8
+#define ODM_PHY_PWRDIFF BIT9
+#define ODM_PHY_SICR BIT10
+#define ODM_PHY_SICW BIT11
+
+
+
+
+extern u4Byte ODM_GlobalDebugLevel;
+
+
+#if DBG
+extern u8Byte ODM_GlobalDebugComponents;
+#endif
+#endif
+#if 0
+
+//-----------------------------------------------------------------------------
+// Define the debug levels
+//
+// 1. DBG_TRACE and DBG_LOUD are used for normal cases.
+// So that, they can help SW engineer to develope or trace states changed
+// and also help HW enginner to trace every operation to and from HW,
+// e.g IO, Tx, Rx.
+//
+// 2. DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases,
+// which help us to debug SW or HW.
+//
+//-----------------------------------------------------------------------------
+//
+// Never used in a call to ODM_RT_TRACE(pDM_Odm,)!
+//
+#define DBG_OFF 0
+
+//
+// Deprecated! Don't use it!
+// TODO: fix related debug message!
+//
+//#define DBG_SEC 1
+
+//
+// Fatal bug.
+// For example, Tx/Rx/IO locked up, OS hangs, memory access violation,
+// resource allocation failed, unexpected HW behavior, HW BUG and so on.
+//
+#define DBG_SERIOUS 2
+
+//
+// Abnormal, rare, or unexpeted cases.
+// For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.
+//
+#define DBG_WARNING 3
+
+//
+// Normal case with useful information about current SW or HW state.
+// For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status,
+// SW protocol state change, dynamic mechanism state change and so on.
+//
+#define DBG_LOUD 4
+
+//
+// Normal case with detail execution flow or information.
+//
+#define DBG_TRACE 5
+
+
+
+//-----------------------------------------------------------------------------
+// Define the tracing components
+//
+//-----------------------------------------------------------------------------
+#define COMP_TRACE BIT0 // For function call tracing.
+#define COMP_DBG BIT1 // Only for temporary debug message.
+#define COMP_INIT BIT2 // during driver initialization / halt / reset.
+#define COMP_OID_QUERY BIT3 // Query OID.
+#define COMP_OID_SET BIT4 // Set OID.
+#define COMP_RECV BIT5 // Reveive part data path.
+#define COMP_SEND BIT6 // Send part path.
+#define COMP_IO BIT7 // I/O Related. Added by Annie, 2006-03-02.
+#define COMP_POWER BIT8 // 802.11 Power Save mode or System/Device Power state related.
+#define COMP_MLME BIT9 // 802.11 link related: join/start BSS, leave BSS.
+#define COMP_SCAN BIT10 // For site survey.
+#define COMP_SYSTEM BIT11 // For general platform function.
+#define COMP_SEC BIT12 // For Security.
+#define COMP_AP BIT13 // For AP mode related.
+#define COMP_TURBO BIT14 // For Turbo Mode related. By Annie, 2005-10-21.
+#define COMP_QOS BIT15 // For QoS.
+#define COMP_AUTHENTICATOR BIT16 // For AP mode Authenticator. Added by Annie, 2006-01-30.
+#define COMP_BEACON BIT17 // For Beacon related, by rcnjko.
+#define COMP_ANTENNA BIT18 // For Antenna diversity related, by rcnjko.
+#define COMP_RATE BIT19 // For Rate Adaptive mechanism, 2006.07.02, by rcnjko. #define COMP_EVENTS 0x00000080 // Event handling
+#define COMP_EVENTS BIT20 // Event handling
+#define COMP_FPGA BIT21 // For FPGA verfication
+#define COMP_RM BIT22 // For Radio Measurement.
+#define COMP_MP BIT23 // For mass production test, by shien chang, 2006.07.13
+#define COMP_RXDESC BIT24 // Show Rx desc information for SD3 debug. Added by Annie, 2006-07-15.
+#define COMP_CKIP BIT25 // For CCX 1 S13: CKIP. Added by Annie, 2006-08-14.
+#define COMP_DIG BIT26 // For DIG, 2006.09.25, by rcnjko.
+#define COMP_TXAGC BIT27 // For Tx power, 060928, by rcnjko.
+#define COMP_HIPWR BIT28 // For High Power Mechanism, 060928, by rcnjko.
+#define COMP_HALDM BIT29 // For HW Dynamic Mechanism, 061010, by rcnjko.
+#define COMP_RSNA BIT30 // For RSNA IBSS , 061201, by CCW.
+#define COMP_INDIC BIT31 // For link indication
+#define COMP_LED BIT32 // For LED.
+#define COMP_RF BIT33 // For RF.
+//1!!!!!!!!!!!!!!!!!!!!!!!!!!!
+//1//1Attention Please!!!<11n or 8190 specific code should be put below this line>
+//1!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+#define COMP_HT BIT34 // For 802.11n HT related information. by Emily 2006-8-11
+#define COMP_POWER_TRACKING BIT35 //FOR 8190 TX POWER TRACKING
+#define COMP_RX_REORDER BIT36 // 8190 Rx Reorder
+#define COMP_AMSDU BIT37 // For A-MSDU Debugging
+#define COMP_WPS BIT38 //WPS Debug Message
+#define COMP_RATR BIT39
+#define COMP_RESET BIT40
+// For debug command to print on dbgview!!
+#define COMP_CMD BIT41
+#define COMP_EFUSE BIT42
+#define COMP_MESH_INTERWORKING BIT43
+#define COMP_CCX BIT44 //CCX Debug Flag
+#define COMP_IOCTL BIT45 // IO Control
+#define COMP_GP BIT46 // For generic parser.
+#define COMP_TXAGG BIT47
+#define COMP_HVL BIT48 // For Ndis 6.2 Context Swirch and Hardware Virtualiztion Layer
+#define COMP_TEST BIT49
+#define COMP_BB_POWERSAVING BIT50
+#define COMP_SWAS BIT51 // For SW Antenna Switch
+#define COMP_P2P BIT52
+#define COMP_MUX BIT53
+#define COMP_FUNC BIT54
+#define COMP_TDLS BIT55
+#define COMP_OMNIPEEK BIT56
+#define COMP_DUALMACSWITCH BIT60 // 2010/12/27 Add for Dual mac mode debug
+#define COMP_EASY_CONCURRENT BIT61 // 2010/12/27 Add for easy cncurrent mode debug
+#define COMP_PSD BIT63 //2011/3/9 Add for WLAN PSD for BT AFH
+
+#define COMP_DFS BIT62
+
+#define COMP_ALL UINT64_C(0xFFFFFFFFFFFFFFFF) // All components
+// For debug print flag to use
+/*------------------------------Define structure----------------------------*/
+/* 2007/07/13 MH *//*------For DeBuG Print modeue------*/
+
+/* Defnie structure to store different debug flag variable. Every debug flag
+ is a UINT32 integer and you can assign 32 different events. */
+typedef struct tag_DBGP_Debug_Flag_Structure
+{
+ u4Byte Mans; /* Main Scheduler module. */
+ u4Byte Rtos; /* RTOS module. */
+ u4Byte Alarm; /* Alarm module. */
+ u4Byte Pm; /* Performance monitor module. */
+}DBGP_FLAG_T;
+
+/* Define debug print header for every service module.*/
+typedef struct tag_DBGP_Service_Module_Header_Name_Structure
+{
+ const char *pMANS;
+ const char *pRTOS;
+ const char *pALM;
+ const char *pPEM;
+ const char *pCMPK;
+ const char *pRAPD;
+ const char *pTXPB;
+ const char *pQUMG;
+}DBGP_HEAD_T;
+
+
+/* Define different debug flag for dedicated service modules in debug flag array. */
+// Each module has independt 32 bit debug flag you cnn define the flag as yout require.
+typedef enum tag_DBGP_Flag_Type_Definition
+{
+ FQoS = 0,
+ FTX = 1,
+ FRX = 2,
+ FSEC = 3,
+ FMGNT = 4,
+ FMLME = 5,
+ FRESOURCE = 6,
+ FBEACON = 7,
+ FISR = 8,
+ FPHY = 9,
+ FMP = 10,
+ FEEPROM = 11,
+ FPWR = 12,
+ FDM = 13,
+ FDBG_CTRL = 14,
+ FC2H = 15,
+ FBT = 16,
+ FINIT = 17,
+ FIOCTL = 18,
+ FSHORT_CUT = 19,
+ DBGP_TYPE_MAX
+}DBGP_FLAG_E;
+
+
+// Define Qos Relative debug flag bit --> FQoS
+#define QoS_INIT BIT0
+#define QoS_VISTA BIT1
+
+// Define TX relative debug bit --> FTX
+#define TX_DESC BIT0
+#define TX_DESC_TID BIT1
+#define TX_PATH BIT2
+
+// Define RX relative debug bit --> FRX
+#define RX_DATA BIT0
+#define RX_PHY_STS BIT1
+#define RX_PHY_SS BIT2
+#define RX_PHY_SQ BIT3
+#define RX_PHY_ASTS BIT4
+#define RX_ERR_LEN BIT5
+#define RX_DEFRAG BIT6
+#define RX_ERR_RATE BIT7
+#define RX_PATH BIT8
+#define RX_BEACON BIT9
+
+// Define Security relative debug bit --> FSEC
+
+// Define MGNT relative debug bit --> FMGNT
+
+// Define MLME relative debug bit --> FMLME
+#define MEDIA_STS BIT0
+#define LINK_STS BIT1
+
+// Define OS resource check module bit --> FRESOURCE
+#define OS_CHK BIT0
+
+// Define beacon content check module bit --> FBEACON
+#define BCN_SHOW BIT0
+#define BCN_PEER BIT1
+
+// Define ISR/IMR check module bit --> FISR
+#define ISR_CHK BIT0
+
+// Define PHY-BB/RF/MAC check module bit --> FPHY
+#define PHY_BBR BIT0
+#define PHY_BBW BIT1
+#define PHY_RFR BIT2
+#define PHY_RFW BIT3
+#define PHY_MACR BIT4
+#define PHY_MACW BIT5
+#define PHY_ALLR BIT6
+#define PHY_ALLW BIT7
+#define PHY_TXPWR BIT8
+#define PHY_PWRDIFF BIT9
+#define PHY_SICR BIT10
+#define PHY_SICW BIT11
+
+// Define MPT driver check module bit --> FMP
+#define MP_RX BIT0
+#define MP_SWICH_CH BIT1
+
+// Define EEPROM and EFUSE check module bit --> FEEPROM
+#define EEPROM_W BIT0
+#define EFUSE_PG BIT1
+#define EFUSE_READ_ALL BIT2
+#define EFUSE_ANALYSIS BIT3
+#define EFUSE_PG_DETAIL BIT4
+
+// Define power save check module bit --> FPWR
+#define LPS BIT0
+#define IPS BIT1
+#define PWRSW BIT2
+#define PWRHW BIT3
+#define PWRHAL BIT4
+
+// Define Dynamic Mechanism check module bit --> FDM
+#define WA_IOT BIT0
+#define DM_PWDB BIT1
+#define DM_Monitor BIT2
+#define DM_DIG BIT3
+#define DM_EDCA_Turbo BIT4
+#define DM_BT30 BIT5
+
+// Define Dbg Control module bit --> FDBG_CTRL
+#define DBG_CTRL_TRACE BIT0
+#define DBG_CTRL_INBAND_NOISE BIT1
+
+// Define FW C2H Cmd check module bit --> FC2H
+#define C2H_Summary BIT0
+#define C2H_PacketData BIT1
+#define C2H_ContentData BIT2
+// Define BT Cmd check module bit --> FBT
+#define BT_TRACE BIT0
+#define BT_RFPoll BIT1
+
+// Define init check for module bit --> FINIT
+#define INIT_EEPROM BIT0
+#define INIT_TxPower BIT1
+#define INIT_IQK BIT2
+#define INIT_RF BIT3
+
+// Define IOCTL Cmd check module bit --> FIOCTL
+// section 1 : IRP related
+#define IOCTL_IRP BIT0
+#define IOCTL_IRP_DETAIL BIT1
+#define IOCTL_IRP_STATISTICS BIT2
+#define IOCTL_IRP_HANDLE BIT3
+// section 2 : HCI command/event
+#define IOCTL_BT_HCICMD BIT8
+#define IOCTL_BT_HCICMD_DETAIL BIT9
+#define IOCTL_BT_HCICMD_EXT BIT10
+#define IOCTL_BT_EVENT BIT11
+#define IOCTL_BT_EVENT_DETAIL BIT12
+#define IOCTL_BT_EVENT_PERIODICAL BIT13
+// section 3 : BT tx/rx data and throughput
+#define IOCTL_BT_TX_ACLDATA BIT16
+#define IOCTL_BT_TX_ACLDATA_DETAIL BIT17
+#define IOCTL_BT_RX_ACLDATA BIT18
+#define IOCTL_BT_RX_ACLDATA_DETAIL BIT19
+#define IOCTL_BT_TP BIT20
+// section 4 : BT connection state machine.
+#define IOCTL_STATE BIT21
+#define IOCTL_BT_LOGO BIT22
+// section 5 : BT function trace
+#define IOCTL_CALLBACK_FUN BIT24
+#define IOCTL_PARSE_BT_PKT BIT25
+#define IOCTL_BT_TX_PKT BIT26
+#define IOCTL_BT_FLAG_MON BIT27
+
+//
+// Define init check for module bit --> FSHORT_CUT
+// 2011/07/20 MH Add for short but definition.
+//
+#define SHCUT_TX BIT0
+#define SHCUT_RX BIT1
+
+
+/* 2007/07/13 MH *//*------For DeBuG Print modeue------*/
+/*------------------------------Define structure----------------------------*/
+
+
+/*------------------------Export Marco Definition---------------------------*/
+#if (DM_ODM_SUPPORT_TYPE != ODM_MP)
+#define RT_PRINTK(fmt, args...) printk( "%s(): " fmt, __FUNCTION__, ## args);
+
+#if DBG
+#define ODM_RT_TRACE(pDM_Odm,comp, level, fmt) \
+ if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel)) \
+ { \
+ RT_PRINTK fmt; \
+ }
+
+#define RT_TRACE_F(comp, level, fmt) \
+ if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel)) \
+ { \
+ RT_PRINTK fmt; \
+ }
+
+#define RT_ASSERT(expr,fmt) \
+ if(!(expr)) { \
+ printk( "Assertion failed! %s at ......\n", #expr); \
+ printk( " ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__); \
+ }
+#define dbg_enter() { printk("==> %s\n", __FUNCTION__); }
+#define dbg_exit() { printk("<== %s\n", __FUNCTION__); }
+#define dbg_trace(str) { printk("%s:%s\n", __FUNCTION__, str); }
+#else
+#define ODM_RT_TRACE(pDM_Odm,comp, level, fmt)
+#define RT_TRACE_F(comp, level, fmt)
+#define RT_ASSERT(expr, fmt)
+#define dbg_enter()
+#define dbg_exit()
+#define dbg_trace(str)
+#endif
+
+#if DBG
+#define DbgPrint printk
+
+#define PRINT_DATA(_TitleString, _HexData, _HexDataLen) \
+ { \
+ char *szTitle = _TitleString; \
+ pu1Byte pbtHexData = _HexData; \
+ u4Byte u4bHexDataLen = _HexDataLen; \
+ u4Byte __i; \
+ DbgPrint("%s", szTitle); \
+ for (__i=0;__i<u4bHexDataLen;__i++) \
+ { \
+ if ((__i & 15) == 0) \
+ { \
+ DbgPrint("\n"); \
+ } \
+ DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? " " : " ") ); \
+ } \
+ DbgPrint("\n"); \
+ }
+
+// RT_PRINT_XXX macros: implemented for debugging purpose.
+// Added by Annie, 2005-11-21.
+#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \
+ if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
+ { \
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_HexData; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ for( __i=0; __i<(int)_HexDataLen; __i++ ) \
+ { \
+ DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" "); \
+ if (((__i + 1) % 16) == 0) DbgPrint("\n"); \
+ } \
+ DbgPrint("\n"); \
+ }
+
+#define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr) \
+ if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
+ { \
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_Ptr; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint(" "); \
+ for( __i=0; __i<6; __i++ ) \
+ DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
+ DbgPrint("\n"); \
+ }
+
+#define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum) \
+ if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
+ { \
+ int __i, __j; \
+ pu1Byte ptr = (pu1Byte)_Ptr; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint("\n"); \
+ for( __i=0; __i<(int)_AddNum; __i++ ) \
+ { \
+ for( __j=0; __j<6; __j++ ) \
+ DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-"); \
+ DbgPrint("\n"); \
+ } \
+ }
+
+// Added by Annie, 2005-11-22.
+#define MAX_STR_LEN 64
+#define PRINTABLE(_ch) (_ch>=' ' &&_ch<='~' ) // I want to see ASCII 33 to 126 only. Otherwise, I print '?'. Annie, 2005-11-22.
+
+#define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len) \
+ if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
+ { \
+ int __i; \
+ u1Byte buffer[MAX_STR_LEN]; \
+ int length = (_Len<MAX_STR_LEN)? _Len : (MAX_STR_LEN-1) ; \
+ PlatformZeroMemory( buffer, MAX_STR_LEN ); \
+ PlatformMoveMemory( buffer, (pu1Byte)_Ptr, length ); \
+ for( __i=0; __i<MAX_STR_LEN; __i++ ) \
+ { \
+ if( !PRINTABLE(buffer[__i]) ) buffer[__i] = '?'; \
+ } \
+ buffer[length] = '\0'; \
+ DbgPrint("Rtl819x: "); \
+ DbgPrint(_TitleString); \
+ DbgPrint(": %d, <%s>\n", _Len, buffer); \
+ }
+
+#else // of #if DBG
+#define DbgPrint(...)
+#define PRINT_DATA(_TitleString, _HexData, _HexDataLen)
+#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen)
+#define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)
+#define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)
+#define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)
+#endif // of #if DBG
+
+
+
+#endif // #if (DM_ODM_SUPPORT_TYPE != ODM_MP)
+
+#define DEBUG_PRINT 1
+
+// Please add new OS's print API by yourself
+
+//#if (RT_PLATFORM==PLATFORM_WINDOWS)
+#if (DEBUG_PRINT == 1) && DBG
+#define RTPRINT(dbgtype, dbgflag, printstr)\
+{\
+ if (DBGP_Type[dbgtype] & dbgflag)\
+ {\
+ DbgPrint printstr;\
+ }\
+}
+
+#define RTPRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)\
+{\
+ if (DBGP_Type[dbgtype] & dbgflag)\
+ {\
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_Ptr; \
+ DbgPrint printstr; \
+ DbgPrint(" "); \
+ for( __i=0; __i<6; __i++ ) \
+ DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
+ DbgPrint("\n"); \
+ }\
+}
+
+#define RTPRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\
+{\
+ if (DBGP_Type[dbgtype] & dbgflag)\
+ {\
+ int __i; \
+ pu1Byte ptr = (pu1Byte)_HexData; \
+ DbgPrint(_TitleString); \
+ for( __i=0; __i<(int)_HexDataLen; __i++ ) \
+ { \
+ DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" ");\
+ if (((__i + 1) % 16) == 0) DbgPrint("\n");\
+ } \
+ DbgPrint("\n"); \
+ }\
+}
+#define FuncEntry FunctionIn(COMP_FUNC)
+#define FuncExit FunctionOut(COMP_FUNC)
+
+#define FunctionIn(_comp) ODM_RT_TRACE(pDM_Odm,(_comp), DBG_LOUD, ("==========> %s\n", __FUNCTION__))
+#define FunctionOut(_comp) ODM_RT_TRACE(pDM_Odm,(_comp), DBG_LOUD, ("<========== %s\n", __FUNCTION__))
+
+
+#else
+
+#define DBGP(dbgtype, dbgflag, printstr)
+#define RTPRINT(dbgtype, dbgflag, printstr)
+#define RTPRINT_ADDR(dbgtype, dbgflag, printstr, _Ptr)
+#define RTPRINT_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)
+#define FuncEntry
+#define FuncExit
+#define FunctionIn(_comp)
+#define FunctionOut(_comp)
+#endif
+/*------------------------Export Marco Definition---------------------------*/
+
+
+/*------------------------Export global variable----------------------------*/
+extern u4Byte DBGP_Type[DBGP_TYPE_MAX];
+extern DBGP_HEAD_T DBGP_Head;
+
+/*------------------------Export global variable----------------------------*/
+
+
+/*--------------------------Exported Function prototype---------------------*/
+extern void DBGP_Flag_Init(void);
+extern void DBG_PrintAllFlag(void);
+extern void DBG_PrintAllComp(void);
+extern void DBG_PrintFlagEvent(u1Byte DbgFlag);
+extern void DBG_DumpMem(const u1Byte DbgComp,
+ const u1Byte DbgLevel,
+ pu1Byte pMem,
+ u2Byte Len);
+
+/*--------------------------Exported Function prototype---------------------*/
+
+
+
+
+
+
+
+
+
+extern u4Byte GlobalDebugLevel;
+extern u8Byte GlobalDebugComponents;
+
+
+#endif
+
+
+#endif // __ODM_DBG_H__
+