1a23fd118Syl /*
2a23fd118Syl  * CDDL HEADER START
3a23fd118Syl  *
4a23fd118Syl  * The contents of this file are subject to the terms of the
5a23fd118Syl  * Common Development and Distribution License (the "License").
6a23fd118Syl  * You may not use this file except in compliance with the License.
7a23fd118Syl  *
8a23fd118Syl  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9a23fd118Syl  * or http://www.opensolaris.org/os/licensing.
10a23fd118Syl  * See the License for the specific language governing permissions
11a23fd118Syl  * and limitations under the License.
12a23fd118Syl  *
13a23fd118Syl  * When distributing Covered Code, include this CDDL HEADER in each
14a23fd118Syl  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15a23fd118Syl  * If applicable, add the following below this CDDL HEADER, with the
16a23fd118Syl  * fields enclosed by brackets "[]" replaced with your own identifying
17a23fd118Syl  * information: Portions Copyright [yyyy] [name of copyright owner]
18a23fd118Syl  *
19a23fd118Syl  * CDDL HEADER END
20a23fd118Syl  *
21*8347601bSyl  * Copyright (c) 2002-2006 Neterion, Inc.
22a23fd118Syl  */
23a23fd118Syl 
24a23fd118Syl #ifndef XGE_DEBUG_H
25a23fd118Syl #define XGE_DEBUG_H
26a23fd118Syl 
27a23fd118Syl #include "xge-os-pal.h"
28a23fd118Syl 
29*8347601bSyl __EXTERN_BEGIN_DECLS
30*8347601bSyl 
31a23fd118Syl /* to make some gcc versions happier */
32a23fd118Syl #ifndef __func__
33a23fd118Syl #define __func__ __FUNCTION__
34a23fd118Syl #endif
35a23fd118Syl 
36a23fd118Syl #ifdef XGE_DEBUG_FP
37a23fd118Syl #define XGE_DEBUG_FP_DEVICE	0x1
38a23fd118Syl #define XGE_DEBUG_FP_CHANNEL	0x2
39a23fd118Syl #define XGE_DEBUG_FP_FIFO	0x4
40a23fd118Syl #define XGE_DEBUG_FP_RING	0x8
41a23fd118Syl #endif
42a23fd118Syl 
43a23fd118Syl /**
44a23fd118Syl  * enum xge_debug_level_e
45a23fd118Syl  * @XGE_NONE: debug disabled
46a23fd118Syl  * @XGE_ERR: all errors going to be logged out
47a23fd118Syl  * @XGE_TRACE: all errors plus all kind of verbose tracing print outs
48a23fd118Syl  *                 going to be logged out. Very noisy.
49a23fd118Syl  *
50a23fd118Syl  * This enumeration going to be used to switch between different
51a23fd118Syl  * debug levels during runtime if DEBUG macro defined during
52a23fd118Syl  * compilation. If DEBUG macro not defined than code will be
53a23fd118Syl  * compiled out.
54a23fd118Syl  */
55a23fd118Syl typedef enum xge_debug_level_e {
56a23fd118Syl 	XGE_NONE   = 0,
57a23fd118Syl 	XGE_TRACE  = 1,
58a23fd118Syl 	XGE_ERR    = 2,
59a23fd118Syl } xge_debug_level_e;
60a23fd118Syl 
61a23fd118Syl #define XGE_DEBUG_MODULE_MASK_DEF	0x00003030
62a23fd118Syl #define XGE_DEBUG_LEVEL_DEF		XGE_ERR
63a23fd118Syl 
64a23fd118Syl #if defined(XGE_DEBUG_TRACE_MASK) || defined(XGE_DEBUG_ERR_MASK)
65a23fd118Syl 
66a23fd118Syl extern unsigned int *g_module_mask;
67a23fd118Syl extern int *g_level;
68a23fd118Syl 
69a23fd118Syl #ifndef XGE_DEBUG_TRACE_MASK
70a23fd118Syl #define XGE_DEBUG_TRACE_MASK 0
71a23fd118Syl #endif
72a23fd118Syl 
73a23fd118Syl #ifndef XGE_DEBUG_ERR_MASK
74a23fd118Syl #define XGE_DEBUG_ERR_MASK 0
75a23fd118Syl #endif
76a23fd118Syl 
77a23fd118Syl /*
78a23fd118Syl  * @XGE_COMPONENT_HAL_CONFIG: do debug for xge core config module
79a23fd118Syl  * @XGE_COMPONENT_HAL_FIFO: do debug for xge core fifo module
80a23fd118Syl  * @XGE_COMPONENT_HAL_RING: do debug for xge core ring module
81a23fd118Syl  * @XGE_COMPONENT_HAL_CHANNEL: do debug for xge core channel module
82a23fd118Syl  * @XGE_COMPONENT_HAL_DEVICE: do debug for xge core device module
83*8347601bSyl  * @XGE_COMPONENT_HAL_DMQ: do debug for xge core DMQ module
84*8347601bSyl  * @XGE_COMPONENT_HAL_UMQ: do debug for xge core UMQ module
85*8347601bSyl  * @XGE_COMPONENT_HAL_SQ: do debug for xge core SQ module
86*8347601bSyl  * @XGE_COMPONENT_HAL_SRQ: do debug for xge core SRQ module
87*8347601bSyl  * @XGE_COMPONENT_HAL_CRQ: do debug for xge core CRQ module
88*8347601bSyl  * @XGE_COMPONENT_HAL_LRQ: do debug for xge core LRQ module
89*8347601bSyl  * @XGE_COMPONENT_HAL_LCQ: do debug for xge core LCQ module
90a23fd118Syl  * @XGE_COMPONENT_CORE: do debug for xge KMA core module
91a23fd118Syl  * @XGE_COMPONENT_OSDEP: do debug for xge KMA os dependent parts
92a23fd118Syl  * @XGE_COMPONENT_LL: do debug for xge link layer module
93a23fd118Syl  * @XGE_COMPONENT_ALL: activate debug for all modules with no exceptions
94a23fd118Syl  *
95a23fd118Syl  * This enumeration going to be used to distinguish modules
96a23fd118Syl  * or libraries during compilation and runtime.  Makefile must declare
97a23fd118Syl  * XGE_DEBUG_MODULE_MASK macro and set it to proper value.
98a23fd118Syl  */
99*8347601bSyl #define XGE_COMPONENT_HAL_CONFIG		0x00000001
100*8347601bSyl #define	XGE_COMPONENT_HAL_FIFO			0x00000002
101*8347601bSyl #define	XGE_COMPONENT_HAL_RING			0x00000004
102*8347601bSyl #define	XGE_COMPONENT_HAL_CHANNEL		0x00000008
103*8347601bSyl #define	XGE_COMPONENT_HAL_DEVICE		0x00000010
104*8347601bSyl #define	XGE_COMPONENT_HAL_MM			0x00000020
105*8347601bSyl #define	XGE_COMPONENT_HAL_QUEUE		        0x00000040
106*8347601bSyl #define	XGE_COMPONENT_HAL_STATS		        0x00000100
107*8347601bSyl #ifdef XGEHAL_RNIC
108*8347601bSyl #define	XGE_COMPONENT_HAL_DMQ		        0x00000200
109*8347601bSyl #define	XGE_COMPONENT_HAL_UMQ		        0x00000400
110*8347601bSyl #define	XGE_COMPONENT_HAL_SQ		        0x00000800
111*8347601bSyl #define	XGE_COMPONENT_HAL_SRQ		        0x00001000
112*8347601bSyl #define	XGE_COMPONENT_HAL_CQRQ		        0x00002000
113*8347601bSyl #define	XGE_COMPONENT_HAL_LRQ		        0x00004000
114*8347601bSyl #define	XGE_COMPONENT_HAL_LCQ		        0x00008000
115*8347601bSyl #define	XGE_COMPONENT_HAL_POOL		        0x00010000
116*8347601bSyl #endif
117*8347601bSyl 
118a23fd118Syl 	/* space for CORE_XXX */
119*8347601bSyl #define	XGE_COMPONENT_OSDEP			0x10000000
120*8347601bSyl #define	XGE_COMPONENT_LL			0x20000000
121a23fd118Syl #define	XGE_COMPONENT_ALL			0xffffffff
122a23fd118Syl 
123a23fd118Syl #ifndef XGE_DEBUG_MODULE_MASK
124a23fd118Syl #error "XGE_DEBUG_MODULE_MASK macro must be defined for DEBUG mode..."
125a23fd118Syl #endif
126a23fd118Syl 
127a23fd118Syl #ifndef __GNUC__
128a23fd118Syl #ifdef XGE_TRACE_INTO_CIRCULAR_ARR
129a23fd118Syl         #define xge_trace_aux(fmt) xge_os_vatrace(g_xge_os_tracebuf, fmt)
130a23fd118Syl #else
131a23fd118Syl         #define xge_trace_aux(fmt) xge_os_vaprintf(fmt)
132a23fd118Syl #endif
133a23fd118Syl 
134a23fd118Syl /**
135a23fd118Syl  * xge_debug
136a23fd118Syl  * @level: level of debug verbosity.
137a23fd118Syl  * @fmt: printf like format string
138a23fd118Syl  *
139a23fd118Syl  * Provides logging facilities. Can be customized on per-module
140a23fd118Syl  * basis or/and with debug levels. Input parameters, except
141a23fd118Syl  * module and level, are the same as posix printf. This function
142a23fd118Syl  * may be compiled out if DEBUG macro was never defined.
143a23fd118Syl  * See also: xge_debug_level_e{}.
144a23fd118Syl  */
145a23fd118Syl #define xge_debug(module, level, fmt) { \
146a23fd118Syl if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
147a23fd118Syl     (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
148a23fd118Syl     level >= *g_level && module & *g_module_mask) { \
149a23fd118Syl                 xge_trace_aux(fmt); \
150a23fd118Syl 	} \
151a23fd118Syl }
152a23fd118Syl #else /* __GNUC__ */
153a23fd118Syl 
154a23fd118Syl #ifdef XGE_TRACE_INTO_CIRCULAR_ARR
155a23fd118Syl         #define xge_trace_aux(fmt...) xge_os_trace(g_xge_os_tracebuf, fmt)
156a23fd118Syl #else
157a23fd118Syl         #define xge_trace_aux(fmt...) xge_os_printf(fmt)
158a23fd118Syl #endif
159a23fd118Syl 
160a23fd118Syl #define xge_debug(module, level, fmt...) { \
161a23fd118Syl if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
162a23fd118Syl     (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
163a23fd118Syl     level >= *g_level && module & *g_module_mask) { \
164a23fd118Syl                 xge_trace_aux(fmt); \
165a23fd118Syl 	} \
166a23fd118Syl }
167a23fd118Syl #endif /* __GNUC__ */
168a23fd118Syl 
169a23fd118Syl #if (XGE_COMPONENT_HAL_STATS & XGE_DEBUG_MODULE_MASK)
170a23fd118Syl #ifndef __GNUC__
171a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {
172a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_STATS;
173a23fd118Syl 	xge_debug(module, level, fmt);
174a23fd118Syl }
175a23fd118Syl #else /* __GNUC__ */
176a23fd118Syl #define xge_debug_stats(level, fmt...) \
177a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_STATS, level, fmt)
178a23fd118Syl #endif /* __GNUC__ */
179a23fd118Syl #else
180a23fd118Syl #ifndef __GNUC__
181a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
182a23fd118Syl #else /* __GNUC__ */
183a23fd118Syl #define xge_debug_stats(level, fmt...)
184a23fd118Syl #endif /* __GNUC__ */
185a23fd118Syl #endif
186a23fd118Syl 
187a23fd118Syl #if (XGE_COMPONENT_HAL_QUEUE & XGE_DEBUG_MODULE_MASK)
188a23fd118Syl #ifndef __GNUC__
189a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {
190a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_QUEUE;
191a23fd118Syl 	xge_debug(module, level, fmt);
192a23fd118Syl }
193a23fd118Syl #else /* __GNUC__ */
194a23fd118Syl #define xge_debug_queue(level, fmt...) \
195a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_QUEUE, level, fmt)
196a23fd118Syl #endif /* __GNUC__ */
197a23fd118Syl #else
198a23fd118Syl #ifndef __GNUC__
199a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt,
200a23fd118Syl ...) {}
201a23fd118Syl #else /* __GNUC__ */
202a23fd118Syl #define xge_debug_queue(level, fmt...)
203a23fd118Syl #endif /* __GNUC__ */
204a23fd118Syl #endif
205a23fd118Syl 
206a23fd118Syl #if (XGE_COMPONENT_HAL_MM & XGE_DEBUG_MODULE_MASK)
207a23fd118Syl #ifndef __GNUC__
208a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
209a23fd118Syl {
210a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_MM;
211a23fd118Syl 	xge_debug(module, level, fmt);
212a23fd118Syl }
213a23fd118Syl #else /* __GNUC__ */
214a23fd118Syl #define xge_debug_mm(level, fmt...) \
215a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_MM, level, fmt)
216a23fd118Syl #endif /* __GNUC__ */
217a23fd118Syl #else
218a23fd118Syl #ifndef __GNUC__
219a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
220a23fd118Syl {}
221a23fd118Syl #else /* __GNUC__ */
222a23fd118Syl #define xge_debug_mm(level, fmt...)
223a23fd118Syl #endif /* __GNUC__ */
224a23fd118Syl #endif
225a23fd118Syl 
226a23fd118Syl #if (XGE_COMPONENT_HAL_CONFIG & XGE_DEBUG_MODULE_MASK)
227a23fd118Syl #ifndef __GNUC__
228a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {
229a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_CONFIG;
230a23fd118Syl 	xge_debug(module, level, fmt);
231a23fd118Syl }
232a23fd118Syl #else /* __GNUC__ */
233a23fd118Syl #define xge_debug_config(level, fmt...) \
234a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_CONFIG, level, fmt)
235a23fd118Syl #endif /* __GNUC__ */
236a23fd118Syl #else
237a23fd118Syl #ifndef __GNUC__
238a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt,
239a23fd118Syl ...) {}
240a23fd118Syl #else /* __GNUC__ */
241a23fd118Syl #define xge_debug_config(level, fmt...)
242a23fd118Syl #endif /* __GNUC__ */
243a23fd118Syl #endif
244a23fd118Syl 
245a23fd118Syl #if (XGE_COMPONENT_HAL_FIFO & XGE_DEBUG_MODULE_MASK)
246a23fd118Syl #ifndef __GNUC__
247a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {
248a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_FIFO;
249a23fd118Syl 	xge_debug(module, level, fmt);
250a23fd118Syl }
251a23fd118Syl #else /* __GNUC__ */
252a23fd118Syl #define xge_debug_fifo(level, fmt...) \
253a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_FIFO, level, fmt)
254a23fd118Syl #endif /* __GNUC__ */
255a23fd118Syl #else
256a23fd118Syl #ifndef __GNUC__
257a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
258a23fd118Syl #else /* __GNUC__ */
259a23fd118Syl #define xge_debug_fifo(level, fmt...)
260a23fd118Syl #endif /* __GNUC__ */
261a23fd118Syl #endif
262a23fd118Syl 
263a23fd118Syl #if (XGE_COMPONENT_HAL_RING & XGE_DEBUG_MODULE_MASK)
264a23fd118Syl #ifndef __GNUC__
265a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {
266a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_RING;
267a23fd118Syl 	xge_debug(module, level, fmt);
268a23fd118Syl }
269a23fd118Syl #else /* __GNUC__ */
270a23fd118Syl #define xge_debug_ring(level, fmt...) \
271a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_RING, level, fmt)
272a23fd118Syl #endif /* __GNUC__ */
273a23fd118Syl #else
274a23fd118Syl #ifndef __GNUC__
275a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
276a23fd118Syl #else /* __GNUC__ */
277a23fd118Syl #define xge_debug_ring(level, fmt...)
278a23fd118Syl #endif /* __GNUC__ */
279a23fd118Syl #endif
280a23fd118Syl 
281a23fd118Syl #if (XGE_COMPONENT_HAL_CHANNEL & XGE_DEBUG_MODULE_MASK)
282a23fd118Syl #ifndef __GNUC__
283a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {
284a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_CHANNEL;
285a23fd118Syl 	xge_debug(module, level, fmt);
286a23fd118Syl }
287a23fd118Syl #else /* __GNUC__ */
288a23fd118Syl #define xge_debug_channel(level, fmt...) \
289a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_CHANNEL, level, fmt)
290a23fd118Syl #endif /* __GNUC__ */
291a23fd118Syl #else
292a23fd118Syl #ifndef __GNUC__
293a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
294a23fd118Syl #else /* __GNUC__ */
295a23fd118Syl #define xge_debug_channel(level, fmt...)
296a23fd118Syl #endif /* __GNUC__ */
297a23fd118Syl #endif
298a23fd118Syl 
299a23fd118Syl #if (XGE_COMPONENT_HAL_DEVICE & XGE_DEBUG_MODULE_MASK)
300a23fd118Syl #ifndef __GNUC__
301a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {
302a23fd118Syl 	u32 module = XGE_COMPONENT_HAL_DEVICE;
303a23fd118Syl 	xge_debug(module, level, fmt);
304a23fd118Syl }
305a23fd118Syl #else /* __GNUC__ */
306a23fd118Syl #define xge_debug_device(level, fmt...) \
307a23fd118Syl 	xge_debug(XGE_COMPONENT_HAL_DEVICE, level, fmt)
308a23fd118Syl #endif /* __GNUC__ */
309a23fd118Syl #else
310a23fd118Syl #ifndef __GNUC__
311a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
312a23fd118Syl #else /* __GNUC__ */
313a23fd118Syl #define xge_debug_device(level, fmt...)
314a23fd118Syl #endif /* __GNUC__ */
315a23fd118Syl #endif
316a23fd118Syl 
317*8347601bSyl #ifdef XGEHAL_RNIC
318*8347601bSyl 
319*8347601bSyl #if (XGE_COMPONENT_HAL_DMQ & XGE_DEBUG_MODULE_MASK)
320*8347601bSyl #ifndef __GNUC__
321*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {
322*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_DMQ;
323*8347601bSyl 	xge_debug(module, level, fmt);
324*8347601bSyl }
325*8347601bSyl #else /* __GNUC__ */
326*8347601bSyl #define xge_debug_dmq(level, fmt...) \
327*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_DMQ, level, fmt)
328*8347601bSyl #endif /* __GNUC__ */
329*8347601bSyl #else
330*8347601bSyl #ifndef __GNUC__
331*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {}
332*8347601bSyl #else /* __GNUC__ */
333*8347601bSyl #define xge_debug_dmq(level, fmt...)
334*8347601bSyl #endif /* __GNUC__ */
335*8347601bSyl #endif
336*8347601bSyl 
337*8347601bSyl #if (XGE_COMPONENT_HAL_UMQ & XGE_DEBUG_MODULE_MASK)
338*8347601bSyl #ifndef __GNUC__
339*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {
340*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_UMQ;
341*8347601bSyl 	xge_debug(module, level, fmt);
342*8347601bSyl }
343*8347601bSyl #else /* __GNUC__ */
344*8347601bSyl #define xge_debug_umq(level, fmt...) \
345*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_UMQ, level, fmt)
346*8347601bSyl #endif /* __GNUC__ */
347*8347601bSyl #else
348*8347601bSyl #ifndef __GNUC__
349*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {}
350*8347601bSyl #else /* __GNUC__ */
351*8347601bSyl #define xge_debug_umq(level, fmt...)
352*8347601bSyl #endif /* __GNUC__ */
353*8347601bSyl #endif
354*8347601bSyl 
355*8347601bSyl #if (XGE_COMPONENT_HAL_SQ & XGE_DEBUG_MODULE_MASK)
356*8347601bSyl #ifndef __GNUC__
357*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {
358*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_SQ;
359*8347601bSyl 	xge_debug(module, level, fmt);
360*8347601bSyl }
361*8347601bSyl #else /* __GNUC__ */
362*8347601bSyl #define xge_debug_sq(level, fmt...) \
363*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_SQ, level, fmt)
364*8347601bSyl #endif /* __GNUC__ */
365*8347601bSyl #else
366*8347601bSyl #ifndef __GNUC__
367*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {}
368*8347601bSyl #else /* __GNUC__ */
369*8347601bSyl #define xge_debug_sq(level, fmt...)
370*8347601bSyl #endif /* __GNUC__ */
371*8347601bSyl #endif
372*8347601bSyl 
373*8347601bSyl #if (XGE_COMPONENT_HAL_SRQ & XGE_DEBUG_MODULE_MASK)
374*8347601bSyl #ifndef __GNUC__
375*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {
376*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_SRQ;
377*8347601bSyl 	xge_debug(module, level, fmt);
378*8347601bSyl }
379*8347601bSyl #else /* __GNUC__ */
380*8347601bSyl #define xge_debug_srq(level, fmt...) \
381*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_SRQ, level, fmt)
382*8347601bSyl #endif /* __GNUC__ */
383*8347601bSyl #else
384*8347601bSyl #ifndef __GNUC__
385*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {}
386*8347601bSyl #else /* __GNUC__ */
387*8347601bSyl #define xge_debug_srq(level, fmt...)
388*8347601bSyl #endif /* __GNUC__ */
389*8347601bSyl #endif
390*8347601bSyl 
391*8347601bSyl #if (XGE_COMPONENT_HAL_CQRQ & XGE_DEBUG_MODULE_MASK)
392*8347601bSyl #ifndef __GNUC__
393*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {
394*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_CQRQ;
395*8347601bSyl 	xge_debug(module, level, fmt);
396*8347601bSyl }
397*8347601bSyl #else /* __GNUC__ */
398*8347601bSyl #define xge_debug_cqrq(level, fmt...) \
399*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_CQRQ, level, fmt)
400*8347601bSyl #endif /* __GNUC__ */
401*8347601bSyl #else
402*8347601bSyl #ifndef __GNUC__
403*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {}
404*8347601bSyl #else /* __GNUC__ */
405*8347601bSyl #define xge_debug_cqrq(level, fmt...)
406*8347601bSyl #endif /* __GNUC__ */
407*8347601bSyl #endif
408*8347601bSyl 
409*8347601bSyl #if (XGE_COMPONENT_HAL_LRQ & XGE_DEBUG_MODULE_MASK)
410*8347601bSyl #ifndef __GNUC__
411*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) {
412*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_LRQ;
413*8347601bSyl 	xge_debug(module, level, fmt);
414*8347601bSyl }
415*8347601bSyl #else /* __GNUC__ */
416*8347601bSyl #define xge_debug_lrq(level, fmt...) \
417*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_LRQ, level, fmt)
418*8347601bSyl #endif /* __GNUC__ */
419*8347601bSyl #else
420*8347601bSyl #ifndef __GNUC__
421*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) {}
422*8347601bSyl #else /* __GNUC__ */
423*8347601bSyl #define xge_debug_lrq(level, fmt...)
424*8347601bSyl #endif /* __GNUC__ */
425*8347601bSyl #endif
426*8347601bSyl 
427*8347601bSyl #if (XGE_COMPONENT_HAL_LCQ & XGE_DEBUG_MODULE_MASK)
428*8347601bSyl #ifndef __GNUC__
429*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) {
430*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_LCQ;
431*8347601bSyl 	xge_debug(module, level, fmt);
432*8347601bSyl }
433*8347601bSyl #else /* __GNUC__ */
434*8347601bSyl #define xge_debug_lcq(level, fmt...) \
435*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_LCQ, level, fmt)
436*8347601bSyl #endif /* __GNUC__ */
437*8347601bSyl #else
438*8347601bSyl #ifndef __GNUC__
439*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) {}
440*8347601bSyl #else /* __GNUC__ */
441*8347601bSyl #define xge_debug_lcq(level, fmt...)
442*8347601bSyl #endif /* __GNUC__ */
443*8347601bSyl #endif
444*8347601bSyl 
445*8347601bSyl #if (XGE_COMPONENT_HAL_POOL & XGE_DEBUG_MODULE_MASK)
446*8347601bSyl #ifndef __GNUC__
447*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {
448*8347601bSyl 	u32 module = XGE_COMPONENT_HAL_POOL;
449*8347601bSyl 	xge_debug(module, level, fmt);
450*8347601bSyl }
451*8347601bSyl #else /* __GNUC__ */
452*8347601bSyl #define xge_debug_pool(level, fmt...) \
453*8347601bSyl 	xge_debug(XGE_COMPONENT_HAL_POOL, level, fmt)
454*8347601bSyl #endif /* __GNUC__ */
455*8347601bSyl #else
456*8347601bSyl #ifndef __GNUC__
457*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {}
458*8347601bSyl #else /* __GNUC__ */
459*8347601bSyl #define xge_debug_pool(level, fmt...)
460*8347601bSyl #endif /* __GNUC__ */
461*8347601bSyl #endif
462*8347601bSyl 
463*8347601bSyl #endif
464*8347601bSyl 
465a23fd118Syl #if (XGE_COMPONENT_OSDEP & XGE_DEBUG_MODULE_MASK)
466a23fd118Syl #ifndef __GNUC__
467a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {
468a23fd118Syl 	u32 module = XGE_COMPONENT_OSDEP;
469a23fd118Syl 	xge_debug(module, level, fmt);
470a23fd118Syl }
471a23fd118Syl #else /* __GNUC__ */
472a23fd118Syl #define xge_debug_osdep(level, fmt...) \
473a23fd118Syl 	xge_debug(XGE_COMPONENT_OSDEP, level, fmt)
474a23fd118Syl #endif /* __GNUC__ */
475a23fd118Syl #else
476a23fd118Syl #ifndef __GNUC__
477a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
478a23fd118Syl #else /* __GNUC__ */
479a23fd118Syl #define xge_debug_osdep(level, fmt...)
480a23fd118Syl #endif /* __GNUC__ */
481a23fd118Syl #endif
482a23fd118Syl 
483a23fd118Syl #if (XGE_COMPONENT_LL & XGE_DEBUG_MODULE_MASK)
484a23fd118Syl #ifndef __GNUC__
485a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...)
486a23fd118Syl {
487a23fd118Syl 	u32 module = XGE_COMPONENT_LL;
488a23fd118Syl 	xge_debug(module, level, fmt);
489a23fd118Syl }
490a23fd118Syl #else /* __GNUC__ */
491a23fd118Syl #define xge_debug_ll(level, fmt...) \
492a23fd118Syl 	xge_debug(XGE_COMPONENT_LL, level, fmt)
493a23fd118Syl #endif /* __GNUC__ */
494a23fd118Syl #else
495a23fd118Syl #ifndef __GNUC__
496a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
497a23fd118Syl #else /* __GNUC__ */
498a23fd118Syl #define xge_debug_ll(level, fmt...)
499a23fd118Syl #endif /* __GNUC__ */
500a23fd118Syl #endif
501a23fd118Syl 
502a23fd118Syl #else
503a23fd118Syl 
504a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
505a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {}
506a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) {}
507a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {}
508a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
509a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
510a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
511a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
512*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {}
513*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {}
514*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {}
515*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {}
516*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {}
517*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) {}
518*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) {}
519*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {}
520a23fd118Syl static inline void xge_debug_hal(xge_debug_level_e level, char *fmt, ...) {}
521a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
522a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
523a23fd118Syl 
524a23fd118Syl #endif /* end of XGE_DEBUG_*_MASK */
525a23fd118Syl 
526a23fd118Syl #ifdef XGE_DEBUG_ASSERT
527a23fd118Syl 
528a23fd118Syl /**
529a23fd118Syl  * xge_assert
530a23fd118Syl  * @test: C-condition to check
531a23fd118Syl  * @fmt: printf like format string
532a23fd118Syl  *
533a23fd118Syl  * This function implements traditional assert. By default assertions
534a23fd118Syl  * are enabled. It can be disabled by defining XGE_DEBUG_ASSERT macro in
535a23fd118Syl  * compilation
536a23fd118Syl  * time.
537a23fd118Syl  */
538a23fd118Syl #define xge_assert(test) { \
539a23fd118Syl         if (!(test)) xge_os_bug("bad cond: "#test" at %s:%d\n", \
540a23fd118Syl 	__FILE__, __LINE__); }
541a23fd118Syl #else
542a23fd118Syl #define xge_assert(test)
543a23fd118Syl #endif /* end of XGE_DEBUG_ASSERT */
544a23fd118Syl 
545*8347601bSyl __EXTERN_END_DECLS
546*8347601bSyl 
547a23fd118Syl #endif /* XGE_DEBUG_H */
548