Wifi: add rtl8723au & rtl8723bu wifi support.
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / OUTSRC / odm_debug.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \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
8  *\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
12  * more details.\r
13  *\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
17  *\r
18  *\r
19  ******************************************************************************/\r
20 \r
21 \r
22 #ifndef __ODM_DBG_H__\r
23 #define __ODM_DBG_H__\r
24 \r
25 \r
26 //-----------------------------------------------------------------------------\r
27 //      Define the debug levels\r
28 //\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
32 //      e.g IO, Tx, Rx. \r
33 //\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
36 //\r
37 //-----------------------------------------------------------------------------\r
38 //\r
39 //      Never used in a call to ODM_RT_TRACE()!\r
40 //\r
41 #define ODM_DBG_OFF                                     1\r
42 \r
43 //\r
44 //      Fatal bug. \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
47 //\r
48 #define ODM_DBG_SERIOUS                         2\r
49 \r
50 //\r
51 //      Abnormal, rare, or unexpeted cases.\r
52 //      For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.\r
53 //\r
54 #define ODM_DBG_WARNING                         3\r
55 \r
56 //\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
60 //\r
61 #define ODM_DBG_LOUD                                    4\r
62 \r
63 //\r
64 //      Normal case with detail execution flow or information.\r
65 //\r
66 #define ODM_DBG_TRACE                                   5\r
67 \r
68 //-----------------------------------------------------------------------------\r
69 // Define the tracing components\r
70 //\r
71 //-----------------------------------------------------------------------------\r
72 //BB Functions\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
89 //MAC Functions\r
90 #define ODM_COMP_EDCA_TURBO                     BIT16\r
91 #define ODM_COMP_EARLY_MODE                     BIT17\r
92 //RF Functions\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
96 //Common Functions\r
97 #define ODM_COMP_COMMON                         BIT30\r
98 #define ODM_COMP_INIT                           BIT31\r
99 \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
107 #else\r
108         #define DbgPrint        panic_printk\r
109         #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);\r
110 #endif\r
111 \r
112 #ifndef ASSERT\r
113         #define ASSERT(expr)\r
114 #endif\r
115 \r
116 #if DBG\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
119                 {                                                                                                                                                       \\r
120                         RT_PRINTK fmt;                                                                                                                  \\r
121                 }\r
122 \r
123 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)                                                                       \\r
124                 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel))       \\r
125                 {                                                                                                                                                       \\r
126                         RT_PRINTK fmt;                                                                                                                  \\r
127                 }\r
128 \r
129 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)                                                                                       \\r
130                 if(!(expr)) {                                                                                                                                   \\r
131                         DbgPrint( "Assertion failed! %s at ......\n", #expr);                                                           \\r
132                         DbgPrint( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);                        \\r
133                         RT_PRINTK fmt;                                                                                                                  \\r
134                         ASSERT(FALSE);                                                                                                                  \\r
135                 }\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
139 \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
142                         {                                                                                                                                               \\r
143                                 int __i;                                                                                                                                \\r
144                                 pu1Byte __ptr = (pu1Byte)ptr;                                                                                   \\r
145                                 DbgPrint("[ODM] ");                                                                                                     \\r
146                                 DbgPrint(title_str);                                                                                                    \\r
147                                 DbgPrint(" ");                                                                                                          \\r
148                                 for( __i=0; __i<6; __i++ )                                                                                              \\r
149                                         DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-");                                                \\r
150                                 DbgPrint("\n");                                                                                                         \\r
151                         }\r
152 #else\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
160 #endif\r
161 \r
162 \r
163 VOID \r
164 ODM_InitDebugSetting(\r
165         IN              PDM_ODM_T               pDM_Odm\r
166         );\r
167 \r
168 \r
169 \r
170 #if 0\r
171 #if DBG\r
172 #define DbgPrint printk\r
173 \r
174 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen)                                                         \\r
175                         {                                                                                                                                               \\r
176                                 char                    *szTitle = _TitleString;                                                                        \\r
177                                 pu1Byte         pbtHexData = _HexData;                                                                  \\r
178                                 u4Byte          u4bHexDataLen = _HexDataLen;                                                    \\r
179                                 u4Byte          __i;                                                                                                            \\r
180                                 DbgPrint("%s", szTitle);                                                                                                        \\r
181                                 for (__i=0;__i<u4bHexDataLen;__i++)                                                                     \\r
182                                 {                                                                                                                                       \\r
183                                         if ((__i & 15) == 0)                                                                                            \\r
184                                         {                                                                                                                               \\r
185                                                 DbgPrint("\n");                                                                                         \\r
186                                         }                                                                                                                               \\r
187                                         DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? "  " : " ") );             \\r
188                                 }                                                                                                                                       \\r
189                                 DbgPrint("\n");                                                                                                         \\r
190                         }\r
191 \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
196                         {                                                                                                                                               \\r
197                                 int __i;                                                                                                                                \\r
198                                 pu1Byte ptr = (pu1Byte)_HexData;                                                                                \\r
199                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
200                                 DbgPrint(_TitleString);                                                                                         \\r
201                                 for( __i=0; __i<(int)_HexDataLen; __i++ )                                                               \\r
202                                 {                                                                                                                                       \\r
203                                         DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?"  ":" ");                  \\r
204                                         if (((__i + 1) % 16) == 0)      DbgPrint("\n");                                                 \\r
205                                 }                                                                                                                                       \\r
206                                 DbgPrint("\n");                                                                                                         \\r
207                         }\r
208 \r
209 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)                                                                \\r
210                         if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel))   \\r
211                         {                                                                                                                                               \\r
212                                 int __i;                                                                                                                                \\r
213                                 pu1Byte ptr = (pu1Byte)_Ptr;                                                                                    \\r
214                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
215                                 DbgPrint(_TitleString);                                                                                         \\r
216                                 DbgPrint(" ");                                                                                                                  \\r
217                                 for( __i=0; __i<6; __i++ )                                                                                              \\r
218                                         DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-");                                                  \\r
219                                 DbgPrint("\n");                                                                                                         \\r
220                         }\r
221 \r
222 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)                                      \\r
223                         if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel))   \\r
224                         {                                                                                                                                               \\r
225                                 int __i, __j;                                                                                                                   \\r
226                                 pu1Byte ptr = (pu1Byte)_Ptr;                                                                                    \\r
227                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
228                                 DbgPrint(_TitleString);                                                                                         \\r
229                                 DbgPrint("\n");                                                                                                         \\r
230                                 for( __i=0; __i<(int)_AddNum; __i++ )                                                                   \\r
231                                 {                                                                                                                                       \\r
232                                         for( __j=0; __j<6; __j++ )                                                                                      \\r
233                                                 DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-");                            \\r
234                                         DbgPrint("\n");                                                                                                 \\r
235                                 }                                                                                                                                       \\r
236                         }\r
237 \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
241 \r
242 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)                                                   \\r
243                         if(((_Comp) & ODM_GlobalDebugComponents) && (_Level <= ODM_GlobalDebugLevel))   \\r
244                         {                                                                                                                                               \\r
245                                 int             __i;                                                                                                                    \\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
251                                 {                                                                                                                                       \\r
252                                         if( !PRINTABLE(buffer[__i]) )   buffer[__i] = '?';                                              \\r
253                                 }                                                                                                                                       \\r
254                                 buffer[length] = '\0';                                                                                                  \\r
255                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
256                                 DbgPrint(_TitleString);                                                                                         \\r
257                                 DbgPrint(": %d, <%s>\n", _Len, buffer);                                                                 \\r
258                         }\r
259                         \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
268 \r
269 #endif  \r
270 \r
271 \r
272 #if 0\r
273 /* Define debug print header for every service module.*/\r
274 typedef struct tag_ODM_DBGP_Service_Module_Header_Name_Structure\r
275 {\r
276         const char      *pMANS;\r
277         const char      *pRTOS;\r
278         const char      *pALM;\r
279         const char      *pPEM;\r
280         const char      *pCMPK;\r
281         const char      *pRAPD;\r
282         const char      *pTXPB;\r
283         const char      *pQUMG;\r
284 }ODM_DBGP_HEAD_T;\r
285 \r
286 \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
290 {\r
291         ODM_FTX                         = 0,\r
292         ODM_FRX                         ,       \r
293         ODM_FPHY                                ,\r
294         ODM_FPWR                                ,\r
295         ODM_FDM                         ,\r
296         ODM_FC2H                                ,\r
297         ODM_FBT                         ,\r
298         ODM_DBGP_TYPE_MAX\r
299 }ODM_DBGP_FLAG_E;\r
300 \r
301 \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
306 \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
318 \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
332 \r
333 \r
334 \r
335 \r
336 extern  u4Byte ODM_GlobalDebugLevel;\r
337 \r
338 \r
339 #if DBG\r
340 extern  u8Byte ODM_GlobalDebugComponents;\r
341 #endif\r
342 #endif\r
343 #if 0\r
344 \r
345 //-----------------------------------------------------------------------------\r
346 //      Define the debug levels\r
347 //\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
352 //\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
355 //\r
356 //-----------------------------------------------------------------------------\r
357 //\r
358 //      Never used in a call to ODM_RT_TRACE(pDM_Odm,)!\r
359 //\r
360 #define DBG_OFF                                 0\r
361 \r
362 //\r
363 //      Deprecated! Don't use it! \r
364 //      TODO: fix related debug message!\r
365 //\r
366 //#define DBG_SEC                                       1\r
367 \r
368 //\r
369 //      Fatal bug. \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
372 //\r
373 #define DBG_SERIOUS                             2\r
374 \r
375 //\r
376 //      Abnormal, rare, or unexpeted cases.\r
377 //      For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.\r
378 //\r
379 #define DBG_WARNING                             3\r
380 \r
381 //\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
385 //\r
386 #define DBG_LOUD                                4\r
387 \r
388 //\r
389 //      Normal case with detail execution flow or information.\r
390 //\r
391 #define DBG_TRACE                               5\r
392 \r
393 \r
394 \r
395 //-----------------------------------------------------------------------------\r
396 // Define the tracing components\r
397 //\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
436 \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
464 \r
465 #define COMP_DFS                                BIT62\r
466 \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
471 \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
475 {\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
480 }DBGP_FLAG_T;\r
481 \r
482 /* Define debug print header for every service module.*/\r
483 typedef struct tag_DBGP_Service_Module_Header_Name_Structure\r
484 {\r
485         const char      *pMANS;\r
486         const char      *pRTOS;\r
487         const char      *pALM;\r
488         const char      *pPEM;\r
489         const char      *pCMPK;\r
490         const char      *pRAPD;\r
491         const char      *pTXPB;\r
492         const char      *pQUMG;\r
493 }DBGP_HEAD_T;\r
494 \r
495 \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
499 {\r
500         FQoS                            = 0,    \r
501         FTX                                     = 1,\r
502         FRX                                     = 2,    \r
503         FSEC                            = 3,\r
504         FMGNT                           = 4,\r
505         FMLME                           = 5,\r
506         FRESOURCE                       = 6,\r
507         FBEACON                         = 7,\r
508         FISR                            = 8,\r
509         FPHY                            = 9,\r
510         FMP                                     = 10,\r
511         FEEPROM                 = 11,\r
512         FPWR                            = 12,\r
513         FDM                                     = 13,\r
514         FDBG_CTRL                       = 14,\r
515         FC2H                            = 15,\r
516         FBT                                     = 16,\r
517         FINIT                           = 17,\r
518         FIOCTL                          = 18,\r
519         FSHORT_CUT                      = 19,\r
520         DBGP_TYPE_MAX\r
521 }DBGP_FLAG_E;\r
522 \r
523 \r
524 // Define Qos Relative debug flag bit           --> FQoS\r
525 #define         QoS_INIT                        BIT0\r
526 #define         QoS_VISTA                       BIT1\r
527 \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
532 \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
544 \r
545 // Define Security relative debug  bit                  --> FSEC\r
546 \r
547 // Define MGNT relative debug bit                       --> FMGNT\r
548 \r
549 // Define MLME relative debug bit                               --> FMLME\r
550 #define         MEDIA_STS                       BIT0\r
551 #define         LINK_STS                        BIT1\r
552 \r
553 // Define OS resource check module bit          --> FRESOURCE\r
554 #define         OS_CHK                          BIT0\r
555 \r
556 // Define beacon content check module bit               --> FBEACON\r
557 #define         BCN_SHOW                        BIT0\r
558 #define         BCN_PEER                        BIT1\r
559 \r
560 // Define ISR/IMR check module bit              --> FISR\r
561 #define         ISR_CHK                         BIT0\r
562 \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
576 \r
577 // Define MPT driver check module bit           --> FMP\r
578 #define         MP_RX                                   BIT0\r
579 #define         MP_SWICH_CH                     BIT1\r
580 \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
587 \r
588 // Define power save  check module bit          --> FPWR\r
589 #define         LPS                                     BIT0\r
590 #define         IPS                                     BIT1\r
591 #define         PWRSW                           BIT2\r
592 #define         PWRHW                           BIT3\r
593 #define         PWRHAL                          BIT4\r
594 \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
602 \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
606 \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
614 \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
620 \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
648 \r
649 //\r
650 // Define init check for module bit             --> FSHORT_CUT\r
651 // 2011/07/20 MH Add for short but definition.\r
652 //\r
653 #define         SHCUT_TX                                BIT0\r
654 #define         SHCUT_RX                                BIT1\r
655 \r
656 \r
657 /* 2007/07/13 MH  *//*------For DeBuG Print modeue------*/\r
658 /*------------------------------Define structure----------------------------*/\r
659 \r
660 \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
664 \r
665 #if DBG\r
666 #define ODM_RT_TRACE(pDM_Odm,comp, level, fmt)                                                                                  \\r
667                 if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel))     \\r
668                 {                                                                                                                                       \\r
669                         RT_PRINTK fmt;                                                                                                  \\r
670                 }\r
671 \r
672 #define RT_TRACE_F(comp, level, fmt)                                                                                    \\r
673                 if(((comp) & GlobalDebugComponents) && (level <= GlobalDebugLevel))     \\r
674                 {                                                                                                                                       \\r
675                         RT_PRINTK fmt;                                                                                                  \\r
676                 }\r
677 \r
678 #define RT_ASSERT(expr,fmt)                                                                                                     \\r
679                 if(!(expr)) {                                                                                                                   \\r
680                         printk( "Assertion failed! %s at ......\n", #expr);                                                     \\r
681                         printk( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);  \\r
682                 }\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
686 #else\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
691 #define dbg_exit()\r
692 #define dbg_trace(str)\r
693 #endif\r
694 \r
695 #if DBG\r
696 #define DbgPrint printk\r
697 \r
698 #define PRINT_DATA(_TitleString, _HexData, _HexDataLen)                                                         \\r
699                         {                                                                                                                                               \\r
700                                 char                    *szTitle = _TitleString;                                                                        \\r
701                                 pu1Byte         pbtHexData = _HexData;                                                                  \\r
702                                 u4Byte          u4bHexDataLen = _HexDataLen;                                                    \\r
703                                 u4Byte          __i;                                                                                                            \\r
704                                 DbgPrint("%s", szTitle);                                                                                                        \\r
705                                 for (__i=0;__i<u4bHexDataLen;__i++)                                                                     \\r
706                                 {                                                                                                                                       \\r
707                                         if ((__i & 15) == 0)                                                                                            \\r
708                                         {                                                                                                                               \\r
709                                                 DbgPrint("\n");                                                                                         \\r
710                                         }                                                                                                                               \\r
711                                         DbgPrint("%02X%s", pbtHexData[__i], ( ((__i&3)==3) ? "  " : " ") );             \\r
712                                 }                                                                                                                                       \\r
713                                 DbgPrint("\n");                                                                                                         \\r
714                         }\r
715 \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
720                         {                                                                                                                                               \\r
721                                 int __i;                                                                                                                                \\r
722                                 pu1Byte ptr = (pu1Byte)_HexData;                                                                                \\r
723                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
724                                 DbgPrint(_TitleString);                                                                                         \\r
725                                 for( __i=0; __i<(int)_HexDataLen; __i++ )                                                               \\r
726                                 {                                                                                                                                       \\r
727                                         DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?"  ":" ");                  \\r
728                                         if (((__i + 1) % 16) == 0)      DbgPrint("\n");                                                 \\r
729                                 }                                                                                                                                       \\r
730                                 DbgPrint("\n");                                                                                                         \\r
731                         }\r
732 \r
733 #define RT_PRINT_ADDR(_Comp, _Level, _TitleString, _Ptr)                                                                \\r
734                         if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel))   \\r
735                         {                                                                                                                                               \\r
736                                 int __i;                                                                                                                                \\r
737                                 pu1Byte ptr = (pu1Byte)_Ptr;                                                                                    \\r
738                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
739                                 DbgPrint(_TitleString);                                                                                         \\r
740                                 DbgPrint(" ");                                                                                                                  \\r
741                                 for( __i=0; __i<6; __i++ )                                                                                              \\r
742                                         DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-");                                                  \\r
743                                 DbgPrint("\n");                                                                                                         \\r
744                         }\r
745 \r
746 #define RT_PRINT_ADDRS(_Comp, _Level, _TitleString, _Ptr, _AddNum)                                      \\r
747                         if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel))   \\r
748                         {                                                                                                                                               \\r
749                                 int __i, __j;                                                                                                                   \\r
750                                 pu1Byte ptr = (pu1Byte)_Ptr;                                                                                    \\r
751                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
752                                 DbgPrint(_TitleString);                                                                                         \\r
753                                 DbgPrint("\n");                                                                                                         \\r
754                                 for( __i=0; __i<(int)_AddNum; __i++ )                                                                   \\r
755                                 {                                                                                                                                       \\r
756                                         for( __j=0; __j<6; __j++ )                                                                                      \\r
757                                                 DbgPrint("%02X%s", ptr[__i*6+__j], (__j==5)?"":"-");                            \\r
758                                         DbgPrint("\n");                                                                                                 \\r
759                                 }                                                                                                                                       \\r
760                         }\r
761 \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
765 \r
766 #define RT_PRINT_STR(_Comp, _Level, _TitleString, _Ptr, _Len)                                                   \\r
767                         if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel))   \\r
768                         {                                                                                                                                               \\r
769                                 int             __i;                                                                                                                    \\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
775                                 {                                                                                                                                       \\r
776                                         if( !PRINTABLE(buffer[__i]) )   buffer[__i] = '?';                                              \\r
777                                 }                                                                                                                                       \\r
778                                 buffer[length] = '\0';                                                                                                  \\r
779                                 DbgPrint("Rtl819x: ");                                                                                                  \\r
780                                 DbgPrint(_TitleString);                                                                                         \\r
781                                 DbgPrint(": %d, <%s>\n", _Len, buffer);                                                                 \\r
782                         }\r
783                         \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
792 \r
793 \r
794 \r
795 #endif  // #if (DM_ODM_SUPPORT_TYPE != ODM_WIN)\r
796 \r
797 #define         DEBUG_PRINT                             1\r
798 \r
799 // Please add new OS's print API by yourself\r
800 \r
801 //#if (RT_PLATFORM==PLATFORM_WINDOWS) \r
802 #if (DEBUG_PRINT == 1) && DBG\r
803 #define RT_DISP(dbgtype, dbgflag, printstr)\\r
804 {\\r
805         if (DBGP_Type[dbgtype] & dbgflag)\\r
806         {\\r
807                 DbgPrint printstr;\\r
808         }\\r
809 }\r
810 \r
811 #define RT_DISP_ADDR(dbgtype, dbgflag, printstr, _Ptr)\\r
812 {\\r
813         if (DBGP_Type[dbgtype] & dbgflag)\\r
814         {\\r
815                                 int __i;                                                \\r
816                                 pu1Byte ptr = (pu1Byte)_Ptr;    \\r
817                                 DbgPrint printstr;                              \\r
818                                 DbgPrint(" ");                                  \\r
819                                 for( __i=0; __i<6; __i++ )              \\r
820                                         DbgPrint("%02X%s", ptr[__i], (__i==5)?"":"-");          \\r
821                                 DbgPrint("\n");                                                 \\r
822         }\\r
823 }\r
824 \r
825 #define RT_DISP_DATA(dbgtype, dbgflag, _TitleString, _HexData, _HexDataLen)\\r
826 {\\r
827         if (DBGP_Type[dbgtype] & dbgflag)\\r
828         {\\r
829                 int __i;                                                                        \\r
830                 pu1Byte ptr = (pu1Byte)_HexData;                        \\r
831                 DbgPrint(_TitleString);                                 \\r
832                 for( __i=0; __i<(int)_HexDataLen; __i++ )       \\r
833                 {                                                                               \\r
834                         DbgPrint("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?"  ":" ");\\r
835                         if (((__i + 1) % 16) == 0)      DbgPrint("\n");\\r
836                 }                                                                               \\r
837                 DbgPrint("\n");                                                 \\r
838         }\\r
839 }\r
840 \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
843 \r
844 \r
845 #else\r
846 \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
850 \r
851 #define FunctionIn(_comp)\r
852 #define FunctionOut(_comp)\r
853 #endif\r
854 /*------------------------Export Marco Definition---------------------------*/\r
855 \r
856 \r
857 /*------------------------Export global variable----------------------------*/\r
858 extern  u4Byte                  DBGP_Type[DBGP_TYPE_MAX];\r
859 extern  DBGP_HEAD_T     DBGP_Head;\r
860 \r
861 /*------------------------Export global variable----------------------------*/\r
862 \r
863 \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
871                                                         pu1Byte pMem, \r
872                                                         u2Byte Len);\r
873 \r
874 /*--------------------------Exported Function prototype---------------------*/\r
875 \r
876 \r
877 \r
878 \r
879 \r
880 \r
881 \r
882 \r
883 \r
884 extern u4Byte GlobalDebugLevel;\r
885 extern u8Byte GlobalDebugComponents;\r
886 \r
887 \r
888 #endif\r
889 \r
890 \r
891 #endif  // __ODM_DBG_H__\r
892 \r