1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\r
5 * This program is free software; you can redistribute it and/or modify it
\r
6 * under the terms of version 2 of the GNU General Public License as
\r
7 * published by the Free Software Foundation.
\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
14 * You should have received a copy of the GNU General Public License along with
\r
15 * this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
\r
19 ******************************************************************************/
\r
22 #ifndef __ODM_DBG_H__
\r
23 #define __ODM_DBG_H__
\r
26 //-----------------------------------------------------------------------------
\r
27 // Define the debug levels
\r
29 // 1. DBG_TRACE and DBG_LOUD are used for normal cases.
\r
30 // So that, they can help SW engineer to develope or trace states changed
\r
31 // and also help HW enginner to trace every operation to and from HW,
\r
34 // 2. DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases,
\r
35 // which help us to debug SW or HW.
\r
37 //-----------------------------------------------------------------------------
\r
39 // Never used in a call to ODM_RT_TRACE()!
\r
41 #define ODM_DBG_OFF 1
\r
45 // For example, Tx/Rx/IO locked up, OS hangs, memory access violation,
\r
46 // resource allocation failed, unexpected HW behavior, HW BUG and so on.
\r
48 #define ODM_DBG_SERIOUS 2
\r
51 // Abnormal, rare, or unexpeted cases.
\r
52 // For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.
\r
54 #define ODM_DBG_WARNING 3
\r
57 // Normal case with useful information about current SW or HW state.
\r
58 // For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status,
\r
59 // SW protocol state change, dynamic mechanism state change and so on.
\r
61 #define ODM_DBG_LOUD 4
\r
64 // Normal case with detail execution flow or information.
\r
66 #define ODM_DBG_TRACE 5
\r
68 //-----------------------------------------------------------------------------
\r
69 // Define the tracing components
\r
71 //-----------------------------------------------------------------------------
\r
73 #define ODM_COMP_DIG BIT0
\r
74 #define ODM_COMP_RA_MASK BIT1
\r
75 #define ODM_COMP_DYNAMIC_TXPWR BIT2
\r
76 #define ODM_COMP_FA_CNT BIT3
\r
77 #define ODM_COMP_RSSI_MONITOR BIT4
\r
78 #define ODM_COMP_CCK_PD BIT5
\r
79 #define ODM_COMP_ANT_DIV BIT6
\r
80 #define ODM_COMP_PWR_SAVE BIT7
\r
81 #define ODM_COMP_PWR_TRAIN BIT8
\r
82 #define ODM_COMP_RATE_ADAPTIVE BIT9
\r
83 #define ODM_COMP_PATH_DIV BIT10
\r
84 #define ODM_COMP_PSD BIT11
\r
85 #define ODM_COMP_DYNAMIC_PRICCA BIT12
\r
86 #define ODM_COMP_RXHP BIT13
\r
87 #define ODM_COMP_MP BIT14
\r
88 #define ODM_COMP_DYNAMIC_ATC BIT15
\r
90 #define ODM_COMP_EDCA_TURBO BIT16
\r
91 #define ODM_COMP_EARLY_MODE BIT17
\r
93 #define ODM_COMP_TX_PWR_TRACK BIT24
\r
94 #define ODM_COMP_RX_GAIN_TRACK BIT25
\r
95 #define ODM_COMP_CALIBRATION BIT26
\r
97 #define ODM_COMP_COMMON BIT30
\r
98 #define ODM_COMP_INIT BIT31
\r
100 /*------------------------Export Marco Definition---------------------------*/
\r
101 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
102 #define RT_PRINTK DbgPrint
\r
103 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
\r
104 #define DbgPrint printk
\r
105 #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);
\r
106 #define RT_DISP(dbgtype, dbgflag, printstr)
\r
108 #define DbgPrint panic_printk
\r
109 #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);
\r
113 #define ASSERT(expr)
\r
117 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt) \
\r
118 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel || level == ODM_DBG_SERIOUS)) \
\r
123 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt) \
\r
124 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
\r
129 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt) \
\r
131 DbgPrint( "Assertion failed! %s at ......\n", #expr); \
\r
132 DbgPrint( " ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__); \
\r
136 #define ODM_dbg_enter() { DbgPrint("==> %s\n", __FUNCTION__); }
\r
137 #define ODM_dbg_exit() { DbgPrint("<== %s\n", __FUNCTION__); }
\r
138 #define ODM_dbg_trace(str) { DbgPrint("%s:%s\n", __FUNCTION__, str); }
\r
140 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr) \
\r
141 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
\r
144 pu1Byte __ptr = (pu1Byte)ptr; \
\r
145 DbgPrint("[ODM] "); \
\r
146 DbgPrint(title_str); \
\r
148 for( __i=0; __i<6; __i++ ) \
\r
149 DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-"); \
\r
153 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)
\r
154 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)
\r
155 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)
\r
156 #define ODM_dbg_enter()
\r
157 #define ODM_dbg_exit()
\r
158 #define ODM_dbg_trace(str)
\r
159 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)
\r
164 ODM_InitDebugSetting(
\r
165 IN PDM_ODM_T pDM_Odm
\r
172 #define DbgPrint printk
\r
174 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen) \
\r
176 char *szTitle = _TitleString; \
\r
177 pu1Byte pbtHexData = _HexData; \
\r
178 u4Byte u4bHexDataLen = _HexDataLen; \
\r
180 DbgPrint("%s", szTitle); \
\r
181 for (__i=0;__i<u4bHexDataLen;__i++) \
\r
183 if ((__i & 15) == 0) \
\r
187 DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? " " : " ") ); \
\r
192 // RT_PRINT_XXX macros: implemented for debugging purpose.
\r
193 // Added by Annie, 2005-11-21.
\r
194 #define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \
\r
195 if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
\r
198 pu1Byte ptr = (pu1Byte)_HexData; \
\r
199 DbgPrint("Rtl819x: "); \
\r
200 DbgPrint(_TitleString); \
\r
201 for( __i=0; __i<(int)_HexDataLen; __i++ ) \
\r
203 DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" "); \
\r
204 if (((__i + 1) % 16) == 0) DbgPrint("\n"); \
\r
209 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr) \
\r
210 if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
\r
213 pu1Byte ptr = (pu1Byte)_Ptr; \
\r
214 DbgPrint("Rtl819x: "); \
\r
215 DbgPrint(_TitleString); \
\r
217 for( __i=0; __i<6; __i++ ) \
\r
218 DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
\r
222 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum) \
\r
223 if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
\r
226 pu1Byte ptr = (pu1Byte)_Ptr; \
\r
227 DbgPrint("Rtl819x: "); \
\r
228 DbgPrint(_TitleString); \
\r
230 for( __i=0; __i<(int)_AddNum; __i++ ) \
\r
232 for( __j=0; __j<6; __j++ ) \
\r
233 DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-"); \
\r
238 // Added by Annie, 2005-11-22.
\r
239 #define MAX_STR_LEN 64
\r
240 #define PRINTABLE(_ch) (_ch>=' ' &&_ch<='~' ) // I want to see ASCII 33 to 126 only. Otherwise, I print '?'. Annie, 2005-11-22.
\r
242 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len) \
\r
243 if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel)) \
\r
246 u1Byte buffer[MAX_STR_LEN]; \
\r
247 int length = (_Len<MAX_STR_LEN)? _Len : (MAX_STR_LEN-1) ; \
\r
248 PlatformZeroMemory( buffer, MAX_STR_LEN ); \
\r
249 PlatformMoveMemory( buffer, (pu1Byte)_Ptr, length ); \
\r
250 for( __i=0; __i<MAX_STR_LEN; __i++ ) \
\r
252 if( !PRINTABLE(buffer[__i]) ) buffer[__i] = '?'; \
\r
254 buffer[length] = '\0'; \
\r
255 DbgPrint("Rtl819x: "); \
\r
256 DbgPrint(_TitleString); \
\r
257 DbgPrint(": %d, <%s>\n", _Len, buffer); \
\r
260 #else // of #if DBG
\r
261 #define DbgPrint(...)
\r
262 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen)
\r
263 #define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen)
\r
264 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)
\r
265 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)
\r
266 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)
\r
267 #endif // of #if DBG
\r
273 /* Define debug print header for every service module.*/
\r
274 typedef struct tag_ODM_DBGP_Service_Module_Header_Name_Structure
\r
287 /* Define different debug flag for dedicated service modules in debug flag array. */
\r
288 // Each module has independt 32 bit debug flag you cnn define the flag as yout require.
\r
289 typedef enum tag_ODM_DBGP_Flag_Type_Definition
\r
302 // Define TX relative debug bit --> FTX
\r
303 #define ODM_TX_DESC BIT0
\r
304 #define ODM_TX_DESC_TID BIT1
\r
305 #define ODM_TX_PATH BIT2
\r
307 // Define RX relative debug bit --> FRX
\r
308 #define ODM_RX_DATA BIT0
\r
309 #define ODM_RX_PHY_STS BIT1
\r
310 #define ODM_RX_PHY_SS BIT2
\r
311 #define ODM_RX_PHY_SQ BIT3
\r
312 #define ODM_RX_PHY_ASTS BIT4
\r
313 #define ODM_RX_ERR_LEN BIT5
\r
314 #define ODM_RX_DEFRAG BIT6
\r
315 #define ODM_RX_ERR_RATE BIT7
\r
316 #define ODM_RX_PATH BIT8
\r
317 #define ODM_RX_BEACON BIT9
\r
319 // Define PHY-BB/RF/MAC check module bit --> FPHY
\r
320 #define ODM_PHY_BBR BIT0
\r
321 #define ODM_PHY_BBW BIT1
\r
322 #define ODM_PHY_RFR BIT2
\r
323 #define ODM_PHY_RFW BIT3
\r
324 #define ODM_PHY_MACR BIT4
\r
325 #define ODM_PHY_MACW BIT5
\r
326 #define ODM_PHY_ALLR BIT6
\r
327 #define ODM_PHY_ALLW BIT7
\r
328 #define ODM_PHY_TXPWR BIT8
\r
329 #define ODM_PHY_PWRDIFF BIT9
\r
330 #define ODM_PHY_SICR BIT10
\r
331 #define ODM_PHY_SICW BIT11
\r
336 extern u4Byte ODM_GlobalDebugLevel;
\r
340 extern u8Byte ODM_GlobalDebugComponents;
\r
345 //-----------------------------------------------------------------------------
\r
346 // Define the debug levels
\r
348 // 1. DBG_TRACE and DBG_LOUD are used for normal cases.
\r
349 // So that, they can help SW engineer to develope or trace states changed
\r
350 // and also help HW enginner to trace every operation to and from HW,
\r
351 // e.g IO, Tx, Rx.
\r
353 // 2. DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases,
\r
354 // which help us to debug SW or HW.
\r
356 //-----------------------------------------------------------------------------
\r
358 // Never used in a call to ODM_RT_TRACE(pDM_Odm,)!
\r
363 // Deprecated! Don't use it!
\r
364 // TODO: fix related debug message!
\r
366 //#define DBG_SEC 1
\r
370 // For example, Tx/Rx/IO locked up, OS hangs, memory access violation,
\r
371 // resource allocation failed, unexpected HW behavior, HW BUG and so on.
\r
373 #define DBG_SERIOUS 2
\r
376 // Abnormal, rare, or unexpeted cases.
\r
377 // For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.
\r
379 #define DBG_WARNING 3
\r
382 // Normal case with useful information about current SW or HW state.
\r
383 // For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status,
\r
384 // SW protocol state change, dynamic mechanism state change and so on.
\r
389 // Normal case with detail execution flow or information.
\r
391 #define DBG_TRACE 5
\r
395 //-----------------------------------------------------------------------------
\r
396 // Define the tracing components
\r
398 //-----------------------------------------------------------------------------
\r
399 #define COMP_TRACE BIT0 // For function call tracing.
\r
400 #define COMP_DBG BIT1 // Only for temporary debug message.
\r
401 #define COMP_INIT BIT2 // during driver initialization / halt / reset.
\r
402 #define COMP_OID_QUERY BIT3 // Query OID.
\r
403 #define COMP_OID_SET BIT4 // Set OID.
\r
404 #define COMP_RECV BIT5 // Reveive part data path.
\r
405 #define COMP_SEND BIT6 // Send part path.
\r
406 #define COMP_IO BIT7 // I/O Related. Added by Annie, 2006-03-02.
\r
407 #define COMP_POWER BIT8 // 802.11 Power Save mode or System/Device Power state related.
\r
408 #define COMP_MLME BIT9 // 802.11 link related: join/start BSS, leave BSS.
\r
409 #define COMP_SCAN BIT10 // For site survey.
\r
410 #define COMP_SYSTEM BIT11 // For general platform function.
\r
411 #define COMP_SEC BIT12 // For Security.
\r
412 #define COMP_AP BIT13 // For AP mode related.
\r
413 #define COMP_TURBO BIT14 // For Turbo Mode related. By Annie, 2005-10-21.
\r
414 #define COMP_QOS BIT15 // For QoS.
\r
415 #define COMP_AUTHENTICATOR BIT16 // For AP mode Authenticator. Added by Annie, 2006-01-30.
\r
416 #define COMP_BEACON BIT17 // For Beacon related, by rcnjko.
\r
417 #define COMP_ANTENNA BIT18 // For Antenna diversity related, by rcnjko.
\r
418 #define COMP_RATE BIT19 // For Rate Adaptive mechanism, 2006.07.02, by rcnjko. #define COMP_EVENTS 0x00000080 // Event handling
\r
419 #define COMP_EVENTS BIT20 // Event handling
\r
420 #define COMP_FPGA BIT21 // For FPGA verfication
\r
421 #define COMP_RM BIT22 // For Radio Measurement.
\r
422 #define COMP_MP BIT23 // For mass production test, by shien chang, 2006.07.13
\r
423 #define COMP_RXDESC BIT24 // Show Rx desc information for SD3 debug. Added by Annie, 2006-07-15.
\r
424 #define COMP_CKIP BIT25 // For CCX 1 S13: CKIP. Added by Annie, 2006-08-14.
\r
425 #define COMP_DIG BIT26 // For DIG, 2006.09.25, by rcnjko.
\r
426 #define COMP_TXAGC BIT27 // For Tx power, 060928, by rcnjko.
\r
427 #define COMP_HIPWR BIT28 // For High Power Mechanism, 060928, by rcnjko.
\r
428 #define COMP_HALDM BIT29 // For HW Dynamic Mechanism, 061010, by rcnjko.
\r
429 #define COMP_RSNA BIT30 // For RSNA IBSS , 061201, by CCW.
\r
430 #define COMP_INDIC BIT31 // For link indication
\r
431 #define COMP_LED BIT32 // For LED.
\r
432 #define COMP_RF BIT33 // For RF.
\r
433 //1!!!!!!!!!!!!!!!!!!!!!!!!!!!
\r
434 //1//1Attention Please!!!<11n or 8190 specific code should be put below this line>
\r
435 //1!!!!!!!!!!!!!!!!!!!!!!!!!!!
\r
437 #define COMP_HT BIT34 // For 802.11n HT related information. by Emily 2006-8-11
\r
438 #define COMP_POWER_TRACKING BIT35 //FOR 8190 TX POWER TRACKING
\r
439 #define COMP_RX_REORDER BIT36 // 8190 Rx Reorder
\r
440 #define COMP_AMSDU BIT37 // For A-MSDU Debugging
\r
441 #define COMP_WPS BIT38 //WPS Debug Message
\r
442 #define COMP_RATR BIT39
\r
443 #define COMP_RESET BIT40
\r
444 // For debug command to print on dbgview!!
\r
445 #define COMP_CMD BIT41
\r
446 #define COMP_EFUSE BIT42
\r
447 #define COMP_MESH_INTERWORKING BIT43
\r
448 #define COMP_CCX BIT44 //CCX Debug Flag
\r
449 #define COMP_IOCTL BIT45 // IO Control
\r
450 #define COMP_GP BIT46 // For generic parser.
\r
451 #define COMP_TXAGG BIT47
\r
452 #define COMP_HVL BIT48 // For Ndis 6.2 Context Swirch and Hardware Virtualiztion Layer
\r
453 #define COMP_TEST BIT49
\r
454 #define COMP_BB_POWERSAVING BIT50
\r
455 #define COMP_SWAS BIT51 // For SW Antenna Switch
\r
456 #define COMP_P2P BIT52
\r
457 #define COMP_MUX BIT53
\r
458 #define COMP_FUNC BIT54
\r
459 #define COMP_TDLS BIT55
\r
460 #define COMP_OMNIPEEK BIT56
\r
461 #define COMP_DUALMACSWITCH BIT60 // 2010/12/27 Add for Dual mac mode debug
\r
462 #define COMP_EASY_CONCURRENT BIT61 // 2010/12/27 Add for easy cncurrent mode debug
\r
463 #define COMP_PSD BIT63 //2011/3/9 Add for WLAN PSD for BT AFH
\r
465 #define COMP_DFS BIT62
\r
467 #define COMP_ALL UINT64_C(0xFFFFFFFFFFFFFFFF) // All components
\r
468 // For debug print flag to use
\r
469 /*------------------------------Define structure----------------------------*/
\r
470 /* 2007/07/13 MH *//*------For DeBuG Print modeue------*/
\r
472 /* Defnie structure to store different debug flag variable. Every debug flag
\r
473 is a UINT32 integer and you can assign 32 different events. */
\r
474 typedef struct tag_DBGP_Debug_Flag_Structure
\r
476 u4Byte Mans; /* Main Scheduler module. */
\r
477 u4Byte Rtos; /* RTOS module. */
\r
478 u4Byte Alarm; /* Alarm module. */
\r
479 u4Byte Pm; /* Performance monitor module. */
\r
482 /* Define debug print header for every service module.*/
\r
483 typedef struct tag_DBGP_Service_Module_Header_Name_Structure
\r
496 /* Define different debug flag for dedicated service modules in debug flag array. */
\r
497 // Each module has independt 32 bit debug flag you cnn define the flag as yout require.
\r
498 typedef enum tag_DBGP_Flag_Type_Definition
\r
524 // Define Qos Relative debug flag bit --> FQoS
\r
525 #define QoS_INIT BIT0
\r
526 #define QoS_VISTA BIT1
\r
528 // Define TX relative debug bit --> FTX
\r
529 #define TX_DESC BIT0
\r
530 #define TX_DESC_TID BIT1
\r
531 #define TX_PATH BIT2
\r
533 // Define RX relative debug bit --> FRX
\r
534 #define RX_DATA BIT0
\r
535 #define RX_PHY_STS BIT1
\r
536 #define RX_PHY_SS BIT2
\r
537 #define RX_PHY_SQ BIT3
\r
538 #define RX_PHY_ASTS BIT4
\r
539 #define RX_ERR_LEN BIT5
\r
540 #define RX_DEFRAG BIT6
\r
541 #define RX_ERR_RATE BIT7
\r
542 #define RX_PATH BIT8
\r
543 #define RX_BEACON BIT9
\r
545 // Define Security relative debug bit --> FSEC
\r
547 // Define MGNT relative debug bit --> FMGNT
\r
549 // Define MLME relative debug bit --> FMLME
\r
550 #define MEDIA_STS BIT0
\r
551 #define LINK_STS BIT1
\r
553 // Define OS resource check module bit --> FRESOURCE
\r
554 #define OS_CHK BIT0
\r
556 // Define beacon content check module bit --> FBEACON
\r
557 #define BCN_SHOW BIT0
\r
558 #define BCN_PEER BIT1
\r
560 // Define ISR/IMR check module bit --> FISR
\r
561 #define ISR_CHK BIT0
\r
563 // Define PHY-BB/RF/MAC check module bit --> FPHY
\r
564 #define PHY_BBR BIT0
\r
565 #define PHY_BBW BIT1
\r
566 #define PHY_RFR BIT2
\r
567 #define PHY_RFW BIT3
\r
568 #define PHY_MACR BIT4
\r
569 #define PHY_MACW BIT5
\r
570 #define PHY_ALLR BIT6
\r
571 #define PHY_ALLW BIT7
\r
572 #define PHY_TXPWR BIT8
\r
573 #define PHY_PWRDIFF BIT9
\r
574 #define PHY_SICR BIT10
\r
575 #define PHY_SICW BIT11
\r
577 // Define MPT driver check module bit --> FMP
\r
579 #define MP_SWICH_CH BIT1
\r
581 // Define EEPROM and EFUSE check module bit --> FEEPROM
\r
582 #define EEPROM_W BIT0
\r
583 #define EFUSE_PG BIT1
\r
584 #define EFUSE_READ_ALL BIT2
\r
585 #define EFUSE_ANALYSIS BIT3
\r
586 #define EFUSE_PG_DETAIL BIT4
\r
588 // Define power save check module bit --> FPWR
\r
593 #define PWRHAL BIT4
\r
595 // Define Dynamic Mechanism check module bit --> FDM
\r
596 #define WA_IOT BIT0
\r
597 #define DM_PWDB BIT1
\r
598 #define DM_Monitor BIT2
\r
599 #define DM_DIG BIT3
\r
600 #define DM_EDCA_Turbo BIT4
\r
601 #define DM_BT30 BIT5
\r
603 // Define Dbg Control module bit --> FDBG_CTRL
\r
604 #define DBG_CTRL_TRACE BIT0
\r
605 #define DBG_CTRL_INBAND_NOISE BIT1
\r
607 // Define FW C2H Cmd check module bit --> FC2H
\r
608 #define C2H_Summary BIT0
\r
609 #define C2H_PacketData BIT1
\r
610 #define C2H_ContentData BIT2
\r
611 // Define BT Cmd check module bit --> FBT
\r
612 #define BT_TRACE BIT0
\r
613 #define BT_RFPoll BIT1
\r
615 // Define init check for module bit --> FINIT
\r
616 #define INIT_EEPROM BIT0
\r
617 #define INIT_TxPower BIT1
\r
618 #define INIT_IQK BIT2
\r
619 #define INIT_RF BIT3
\r
621 // Define IOCTL Cmd check module bit --> FIOCTL
\r
622 // section 1 : IRP related
\r
623 #define IOCTL_IRP BIT0
\r
624 #define IOCTL_IRP_DETAIL BIT1
\r
625 #define IOCTL_IRP_STATISTICS BIT2
\r
626 #define IOCTL_IRP_HANDLE BIT3
\r
627 // section 2 : HCI command/event
\r
628 #define IOCTL_BT_HCICMD BIT8
\r
629 #define IOCTL_BT_HCICMD_DETAIL BIT9
\r
630 #define IOCTL_BT_HCICMD_EXT BIT10
\r
631 #define IOCTL_BT_EVENT BIT11
\r
632 #define IOCTL_BT_EVENT_DETAIL BIT12
\r
633 #define IOCTL_BT_EVENT_PERIODICAL BIT13
\r
634 // section 3 : BT tx/rx data and throughput
\r
635 #define IOCTL_BT_TX_ACLDATA BIT16
\r
636 #define IOCTL_BT_TX_ACLDATA_DETAIL BIT17
\r
637 #define IOCTL_BT_RX_ACLDATA BIT18
\r
638 #define IOCTL_BT_RX_ACLDATA_DETAIL BIT19
\r
639 #define IOCTL_BT_TP BIT20
\r
640 // section 4 : BT connection state machine.
\r
641 #define IOCTL_STATE BIT21
\r
642 #define IOCTL_BT_LOGO BIT22
\r
643 // section 5 : BT function trace
\r
644 #define IOCTL_CALLBACK_FUN BIT24
\r
645 #define IOCTL_PARSE_BT_PKT BIT25
\r
646 #define IOCTL_BT_TX_PKT BIT26
\r
647 #define IOCTL_BT_FLAG_MON BIT27
\r
650 // Define init check for module bit --> FSHORT_CUT
\r
651 // 2011/07/20 MH Add for short but definition.
\r
653 #define SHCUT_TX BIT0
\r
654 #define SHCUT_RX BIT1
\r
657 /* 2007/07/13 MH *//*------For DeBuG Print modeue------*/
\r
658 /*------------------------------Define structure----------------------------*/
\r
661 /*------------------------Export Marco Definition---------------------------*/
\r
662 #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)
\r
663 #define RT_PRINTK(fmt, args...) printk( "%s(): " fmt, __FUNCTION__, ## args);
\r
666 #define ODM_RT_TRACE(pDM_Odm,comp, level, fmt) \
\r
667 if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel)) \
\r
672 #define RT_TRACE_F(comp, level, fmt) \
\r
673 if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel)) \
\r
678 #define RT_ASSERT(expr,fmt) \
\r
680 printk( "Assertion failed! %s at ......\n", #expr); \
\r
681 printk( " ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__); \
\r
683 #define dbg_enter() { printk("==> %s\n", __FUNCTION__); }
\r
684 #define dbg_exit() { printk("<== %s\n", __FUNCTION__); }
\r
685 #define dbg_trace(str) { printk("%s:%s\n", __FUNCTION__, str); }
\r
687 #define ODM_RT_TRACE(pDM_Odm,comp, level, fmt)
\r
688 #define RT_TRACE_F(comp, level, fmt)
\r
689 #define RT_ASSERT(expr, fmt)
\r
690 #define dbg_enter()
\r
692 #define dbg_trace(str)
\r
696 #define DbgPrint printk
\r
698 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen) \
\r
700 char *szTitle = _TitleString; \
\r
701 pu1Byte pbtHexData = _HexData; \
\r
702 u4Byte u4bHexDataLen = _HexDataLen; \
\r
704 DbgPrint("%s", szTitle); \
\r
705 for (__i=0;__i<u4bHexDataLen;__i++) \
\r
707 if ((__i & 15) == 0) \
\r
711 DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? " " : " ") ); \
\r
716 // RT_PRINT_XXX macros: implemented for debugging purpose.
\r
717 // Added by Annie, 2005-11-21.
\r
718 #define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \
\r
719 if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
\r
722 pu1Byte ptr = (pu1Byte)_HexData; \
\r
723 DbgPrint("Rtl819x: "); \
\r
724 DbgPrint(_TitleString); \
\r
725 for( __i=0; __i<(int)_HexDataLen; __i++ ) \
\r
727 DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" "); \
\r
728 if (((__i + 1) % 16) == 0) DbgPrint("\n"); \
\r
733 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr) \
\r
734 if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
\r
737 pu1Byte ptr = (pu1Byte)_Ptr; \
\r
738 DbgPrint("Rtl819x: "); \
\r
739 DbgPrint(_TitleString); \
\r
741 for( __i=0; __i<6; __i++ ) \
\r
742 DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
\r
746 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum) \
\r
747 if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
\r
750 pu1Byte ptr = (pu1Byte)_Ptr; \
\r
751 DbgPrint("Rtl819x: "); \
\r
752 DbgPrint(_TitleString); \
\r
754 for( __i=0; __i<(int)_AddNum; __i++ ) \
\r
756 for( __j=0; __j<6; __j++ ) \
\r
757 DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-"); \
\r
762 // Added by Annie, 2005-11-22.
\r
763 #define MAX_STR_LEN 64
\r
764 #define PRINTABLE(_ch) (_ch>=' ' &&_ch<='~' ) // I want to see ASCII 33 to 126 only. Otherwise, I print '?'. Annie, 2005-11-22.
\r
766 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len) \
\r
767 if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \
\r
770 u1Byte buffer[MAX_STR_LEN]; \
\r
771 int length = (_Len<MAX_STR_LEN)? _Len : (MAX_STR_LEN-1) ; \
\r
772 PlatformZeroMemory( buffer, MAX_STR_LEN ); \
\r
773 PlatformMoveMemory( buffer, (pu1Byte)_Ptr, length ); \
\r
774 for( __i=0; __i<MAX_STR_LEN; __i++ ) \
\r
776 if( !PRINTABLE(buffer[__i]) ) buffer[__i] = '?'; \
\r
778 buffer[length] = '\0'; \
\r
779 DbgPrint("Rtl819x: "); \
\r
780 DbgPrint(_TitleString); \
\r
781 DbgPrint(": %d, <%s>\n", _Len, buffer); \
\r
784 #else // of #if DBG
\r
785 #define DbgPrint(...)
\r
786 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen)
\r
787 #define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen)
\r
788 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)
\r
789 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)
\r
790 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)
\r
791 #endif // of #if DBG
\r
795 #endif // #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)
\r
797 #define DEBUG_PRINT 1
\r
799 // Please add new OS's print API by yourself
\r
801 //#if (RT_PLATFORM==PLATFORM_WINDOWS)
\r
802 #if (DEBUG_PRINT == 1) && DBG
\r
803 #define RT_DISP(dbgtype, dbgflag, printstr)\
\r
805 if (DBGP_Type[dbgtype] & dbgflag)\
\r
807 DbgPrint printstr;\
\r
811 #define RT_DISP_ADDR(dbgtype, dbgflag, printstr, _Ptr)\
\r
813 if (DBGP_Type[dbgtype] & dbgflag)\
\r
816 pu1Byte ptr = (pu1Byte)_Ptr; \
\r
817 DbgPrint printstr; \
\r
819 for( __i=0; __i<6; __i++ ) \
\r
820 DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-"); \
\r
825 #define RT_DISP_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\
\r
827 if (DBGP_Type[dbgtype] & dbgflag)\
\r
830 pu1Byte ptr = (pu1Byte)_HexData; \
\r
831 DbgPrint(_TitleString); \
\r
832 for( __i=0; __i<(int)_HexDataLen; __i++ ) \
\r
834 DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" ");\
\r
835 if (((__i + 1) % 16) == 0) DbgPrint("\n");\
\r
841 #define FunctionIn(_comp) ODM_RT_TRACE(pDM_Odm,(_comp), DBG_LOUD, ("==========> %s\n", __FUNCTION__))
\r
842 #define FunctionOut(_comp) ODM_RT_TRACE(pDM_Odm,(_comp), DBG_LOUD, ("<========== %s\n", __FUNCTION__))
\r
847 #define RT_DISP(dbgtype, dbgflag, printstr)
\r
848 #define RT_DISP_ADDR(dbgtype, dbgflag, printstr, _Ptr)
\r
849 #define RT_DISP_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)
\r
851 #define FunctionIn(_comp)
\r
852 #define FunctionOut(_comp)
\r
854 /*------------------------Export Marco Definition---------------------------*/
\r
857 /*------------------------Export global variable----------------------------*/
\r
858 extern u4Byte DBGP_Type[DBGP_TYPE_MAX];
\r
859 extern DBGP_HEAD_T DBGP_Head;
\r
861 /*------------------------Export global variable----------------------------*/
\r
864 /*--------------------------Exported Function prototype---------------------*/
\r
865 extern void DBGP_Flag_Init(void);
\r
866 extern void DBG_PrintAllFlag(void);
\r
867 extern void DBG_PrintAllComp(void);
\r
868 extern void DBG_PrintFlagEvent(u1Byte DbgFlag);
\r
869 extern void DBG_DumpMem(const u1Byte DbgComp,
\r
870 const u1Byte DbgLevel,
\r
874 /*--------------------------Exported Function prototype---------------------*/
\r
884 extern u4Byte GlobalDebugLevel;
\r
885 extern u8Byte GlobalDebugComponents;
\r
891 #endif // __ODM_DBG_H__
\r