xref: /linux/drivers/net/wireless/realtek/rtlwifi/debug.c (revision bb1c928df78ee6e3665a0d013e74108cc9abf34b)
1 /******************************************************************************
2  *
3  * Copyright(c) 2009-2012  Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  *
22  * Larry Finger <Larry.Finger@lwfinger.net>
23  *****************************************************************************/
24 
25 #include "wifi.h"
26 
27 #include <linux/moduleparam.h>
28 
29 #ifdef CONFIG_RTLWIFI_DEBUG
30 void _rtl_dbg_trace(struct rtl_priv *rtlpriv, u64 comp, int level,
31 		    const char *fmt, ...)
32 {
33 	if (unlikely((comp & rtlpriv->cfg->mod_params->debug_mask) &&
34 		     (level <= rtlpriv->cfg->mod_params->debug_level))) {
35 		struct va_format vaf;
36 		va_list args;
37 
38 		va_start(args, fmt);
39 
40 		vaf.fmt = fmt;
41 		vaf.va = &args;
42 
43 		pr_info(":<%lx> %pV", in_interrupt(), &vaf);
44 
45 		va_end(args);
46 	}
47 }
48 EXPORT_SYMBOL_GPL(_rtl_dbg_trace);
49 
50 void _rtl_dbg_print(struct rtl_priv *rtlpriv, u64 comp, int level,
51 		    const char *fmt, ...)
52 {
53 	if (unlikely((comp & rtlpriv->cfg->mod_params->debug_mask) &&
54 		     (level <= rtlpriv->cfg->mod_params->debug_level))) {
55 		struct va_format vaf;
56 		va_list args;
57 
58 		va_start(args, fmt);
59 
60 		vaf.fmt = fmt;
61 		vaf.va = &args;
62 
63 		pr_info("%pV", &vaf);
64 
65 		va_end(args);
66 	}
67 }
68 EXPORT_SYMBOL_GPL(_rtl_dbg_print);
69 
70 void _rtl_dbg_print_data(struct rtl_priv *rtlpriv, u64 comp, int level,
71 			 const char *titlestring,
72 			 const void *hexdata, int hexdatalen)
73 {
74 	if (unlikely(((comp) & rtlpriv->cfg->mod_params->debug_mask) &&
75 		     ((level) <= rtlpriv->cfg->mod_params->debug_level))) {
76 		pr_info("In process \"%s\" (pid %i): %s\n",
77 			current->comm, current->pid, titlestring);
78 		print_hex_dump_bytes("", DUMP_PREFIX_NONE,
79 				     hexdata, hexdatalen);
80 	}
81 }
82 EXPORT_SYMBOL_GPL(_rtl_dbg_print_data);
83 
84 #endif
85