1f1d2b4d3SLarry Finger /****************************************************************************** 2f1d2b4d3SLarry Finger * 3f1d2b4d3SLarry Finger * Copyright(c) 2009-2012 Realtek Corporation. 4f1d2b4d3SLarry Finger * 5f1d2b4d3SLarry Finger * This program is free software; you can redistribute it and/or modify it 6f1d2b4d3SLarry Finger * under the terms of version 2 of the GNU General Public License as 7f1d2b4d3SLarry Finger * published by the Free Software Foundation. 8f1d2b4d3SLarry Finger * 9f1d2b4d3SLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT 10f1d2b4d3SLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11f1d2b4d3SLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12f1d2b4d3SLarry Finger * more details. 13f1d2b4d3SLarry Finger * 14f1d2b4d3SLarry Finger * The full GNU General Public License is included in this distribution in the 15f1d2b4d3SLarry Finger * file called LICENSE. 16f1d2b4d3SLarry Finger * 17f1d2b4d3SLarry Finger * Contact Information: 18f1d2b4d3SLarry Finger * wlanfae <wlanfae@realtek.com> 19f1d2b4d3SLarry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 20f1d2b4d3SLarry Finger * Hsinchu 300, Taiwan. 21f1d2b4d3SLarry Finger * 22f1d2b4d3SLarry Finger * Larry Finger <Larry.Finger@lwfinger.net> 23f1d2b4d3SLarry Finger *****************************************************************************/ 24f1d2b4d3SLarry Finger 25f1d2b4d3SLarry Finger #include "wifi.h" 26f1d2b4d3SLarry Finger 27f1d2b4d3SLarry Finger #include <linux/moduleparam.h> 28f1d2b4d3SLarry Finger 29f1d2b4d3SLarry Finger void rtl_dbgp_flag_init(struct ieee80211_hw *hw) 30f1d2b4d3SLarry Finger { 31f1d2b4d3SLarry Finger struct rtl_priv *rtlpriv = rtl_priv(hw); 32f1d2b4d3SLarry Finger u8 i; 33f1d2b4d3SLarry Finger 34f1d2b4d3SLarry Finger rtlpriv->dbg.global_debugcomponents = 35f1d2b4d3SLarry Finger COMP_ERR | COMP_FW | COMP_INIT | COMP_RECV | COMP_SEND | 36f1d2b4d3SLarry Finger COMP_MLME | COMP_SCAN | COMP_INTR | COMP_LED | COMP_SEC | 37f1d2b4d3SLarry Finger COMP_BEACON | COMP_RATE | COMP_RXDESC | COMP_DIG | COMP_TXAGC | 38f1d2b4d3SLarry Finger COMP_POWER | COMP_POWER_TRACKING | COMP_BB_POWERSAVING | COMP_SWAS | 39f1d2b4d3SLarry Finger COMP_RF | COMP_TURBO | COMP_RATR | COMP_CMD | 40f1d2b4d3SLarry Finger COMP_EFUSE | COMP_QOS | COMP_MAC80211 | COMP_REGD | COMP_CHAN | 41f1d2b4d3SLarry Finger COMP_EASY_CONCURRENT | COMP_EFUSE | COMP_QOS | COMP_MAC80211 | 42f1d2b4d3SLarry Finger COMP_REGD | COMP_CHAN | COMP_BT_COEXIST; 43f1d2b4d3SLarry Finger 44f1d2b4d3SLarry Finger 45f1d2b4d3SLarry Finger for (i = 0; i < DBGP_TYPE_MAX; i++) 46f1d2b4d3SLarry Finger rtlpriv->dbg.dbgp_type[i] = 0; 47f1d2b4d3SLarry Finger 48f1d2b4d3SLarry Finger /*Init Debug flag enable condition */ 49f1d2b4d3SLarry Finger } 50f1d2b4d3SLarry Finger EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init); 51*9ce22191SJoe Perches 52*9ce22191SJoe Perches #ifdef CONFIG_RTLWIFI_DEBUG 53*9ce22191SJoe Perches void _rtl_dbg_trace(struct rtl_priv *rtlpriv, int comp, int level, 54*9ce22191SJoe Perches const char *modname, const char *fmt, ...) 55*9ce22191SJoe Perches { 56*9ce22191SJoe Perches if (unlikely((comp & rtlpriv->dbg.global_debugcomponents) && 57*9ce22191SJoe Perches (level <= rtlpriv->dbg.global_debuglevel))) { 58*9ce22191SJoe Perches struct va_format vaf; 59*9ce22191SJoe Perches va_list args; 60*9ce22191SJoe Perches 61*9ce22191SJoe Perches va_start(args, fmt); 62*9ce22191SJoe Perches 63*9ce22191SJoe Perches vaf.fmt = fmt; 64*9ce22191SJoe Perches vaf.va = &args; 65*9ce22191SJoe Perches 66*9ce22191SJoe Perches printk(KERN_DEBUG "%s:%ps:<%lx-%x> %pV", 67*9ce22191SJoe Perches modname, __builtin_return_address(0), 68*9ce22191SJoe Perches in_interrupt(), in_atomic(), 69*9ce22191SJoe Perches &vaf); 70*9ce22191SJoe Perches 71*9ce22191SJoe Perches va_end(args); 72*9ce22191SJoe Perches } 73*9ce22191SJoe Perches } 74*9ce22191SJoe Perches EXPORT_SYMBOL_GPL(_rtl_dbg_trace); 75*9ce22191SJoe Perches #endif 76