linux/drivers/net/wireless/realtek/rtlwifi/debug.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/* Copyright(c) 2009-2012  Realtek Corporation.*/
   3
   4#ifndef __RTL_DEBUG_H__
   5#define __RTL_DEBUG_H__
   6
   7/*--------------------------------------------------------------
   8                        Debug level
   9--------------------------------------------------------------*/
  10/*
  11 *Fatal bug.
  12 *For example, Tx/Rx/IO locked up,
  13 *memory access violation,
  14 *resource allocation failed,
  15 *unexpected HW behavior, HW BUG
  16 *and so on.
  17 */
  18/*#define DBG_EMERG                     0 */
  19
  20/*
  21 *Abnormal, rare, or unexpeted cases.
  22 *For example, Packet/IO Ctl canceled,
  23 *device suprisely unremoved and so on.
  24 */
  25#define DBG_WARNING                     2
  26
  27/*
  28 *Normal case driver developer should
  29 *open, we can see link status like
  30 *assoc/AddBA/DHCP/adapter start and
  31 *so on basic and useful infromations.
  32 */
  33#define DBG_DMESG                       3
  34
  35/*
  36 *Normal case with useful information
  37 *about current SW or HW state.
  38 *For example, Tx/Rx descriptor to fill,
  39 *Tx/Rx descriptor completed status,
  40 *SW protocol state change, dynamic
  41 *mechanism state change and so on.
  42 */
  43#define DBG_LOUD                        4
  44
  45/*
  46 *Normal case with detail execution
  47 *flow or information.
  48 */
  49#define DBG_TRACE                       5
  50
  51/*--------------------------------------------------------------
  52                Define the rt_trace components
  53--------------------------------------------------------------*/
  54#define COMP_ERR                        BIT(0)
  55#define COMP_FW                         BIT(1)
  56#define COMP_INIT                       BIT(2)  /*For init/deinit */
  57#define COMP_RECV                       BIT(3)  /*For Rx. */
  58#define COMP_SEND                       BIT(4)  /*For Tx. */
  59#define COMP_MLME                       BIT(5)  /*For MLME. */
  60#define COMP_SCAN                       BIT(6)  /*For Scan. */
  61#define COMP_INTR                       BIT(7)  /*For interrupt Related. */
  62#define COMP_LED                        BIT(8)  /*For LED. */
  63#define COMP_SEC                        BIT(9)  /*For sec. */
  64#define COMP_BEACON                     BIT(10) /*For beacon. */
  65#define COMP_RATE                       BIT(11) /*For rate. */
  66#define COMP_RXDESC                     BIT(12) /*For rx desc. */
  67#define COMP_DIG                        BIT(13) /*For DIG */
  68#define COMP_TXAGC                      BIT(14) /*For Tx power */
  69#define COMP_HIPWR                      BIT(15) /*For High Power Mechanism */
  70#define COMP_POWER                      BIT(16) /*For lps/ips/aspm. */
  71#define COMP_POWER_TRACKING     BIT(17) /*For TX POWER TRACKING */
  72#define COMP_BB_POWERSAVING     BIT(18)
  73#define COMP_SWAS                       BIT(19) /*For SW Antenna Switch */
  74#define COMP_RF                         BIT(20) /*For RF. */
  75#define COMP_TURBO                      BIT(21) /*For EDCA TURBO. */
  76#define COMP_RATR                       BIT(22)
  77#define COMP_CMD                        BIT(23)
  78#define COMP_EFUSE                      BIT(24)
  79#define COMP_QOS                        BIT(25)
  80#define COMP_MAC80211           BIT(26)
  81#define COMP_REGD                       BIT(27)
  82#define COMP_CHAN                       BIT(28)
  83#define COMP_USB                        BIT(29)
  84#define COMP_EASY_CONCURRENT    COMP_USB /* reuse of this bit is OK */
  85#define COMP_BT_COEXIST                 BIT(30)
  86#define COMP_IQK                        BIT(31)
  87#define COMP_TX_REPORT                  BIT_ULL(32)
  88
  89/*--------------------------------------------------------------
  90                Define the rt_print components
  91--------------------------------------------------------------*/
  92/* Define EEPROM and EFUSE  check module bit*/
  93#define EEPROM_W                        BIT(0)
  94#define EFUSE_PG                        BIT(1)
  95#define EFUSE_READ_ALL                  BIT(2)
  96
  97/* Define init check for module bit*/
  98#define INIT_EEPROM                     BIT(0)
  99#define INIT_TXPOWER                    BIT(1)
 100#define INIT_IQK                        BIT(2)
 101#define INIT_RF                         BIT(3)
 102
 103/* Define PHY-BB/RF/MAC check module bit */
 104#define PHY_BBR                         BIT(0)
 105#define PHY_BBW                         BIT(1)
 106#define PHY_RFR                         BIT(2)
 107#define PHY_RFW                         BIT(3)
 108#define PHY_MACR                        BIT(4)
 109#define PHY_MACW                        BIT(5)
 110#define PHY_ALLR                        BIT(6)
 111#define PHY_ALLW                        BIT(7)
 112#define PHY_TXPWR                       BIT(8)
 113#define PHY_PWRDIFF                     BIT(9)
 114
 115/* Define Dynamic Mechanism check module bit --> FDM */
 116#define WA_IOT                          BIT(0)
 117#define DM_PWDB                         BIT(1)
 118#define DM_MONITOR                      BIT(2)
 119#define DM_DIG                          BIT(3)
 120#define DM_EDCA_TURBO                   BIT(4)
 121
 122#define DM_PWDB                         BIT(1)
 123
 124enum dbgp_flag_e {
 125        FQOS = 0,
 126        FTX = 1,
 127        FRX = 2,
 128        FSEC = 3,
 129        FMGNT = 4,
 130        FMLME = 5,
 131        FRESOURCE = 6,
 132        FBEACON = 7,
 133        FISR = 8,
 134        FPHY = 9,
 135        FMP = 10,
 136        FEEPROM = 11,
 137        FPWR = 12,
 138        FDM = 13,
 139        FDBGCTRL = 14,
 140        FC2H = 15,
 141        FBT = 16,
 142        FINIT = 17,
 143        FIOCTL = 18,
 144        DBGP_TYPE_MAX
 145};
 146
 147#ifdef CONFIG_RTLWIFI_DEBUG
 148
 149struct rtl_priv;
 150
 151__printf(4, 5)
 152void _rtl_dbg_print(struct rtl_priv *rtlpriv, u64 comp, int level,
 153                    const char *fmt, ...);
 154
 155void _rtl_dbg_print_data(struct rtl_priv *rtlpriv, u64 comp, int level,
 156                         const char *titlestring,
 157                         const void *hexdata, int hexdatalen);
 158
 159#define rtl_dbg(rtlpriv, comp, level, fmt, ...)                         \
 160        _rtl_dbg_print(rtlpriv, comp, level,                            \
 161                       fmt, ##__VA_ARGS__)
 162
 163#define RTPRINT(rtlpriv, dbgtype, dbgflag, fmt, ...)                    \
 164        _rtl_dbg_print(rtlpriv, dbgtype, dbgflag, fmt, ##__VA_ARGS__)
 165
 166#define RT_PRINT_DATA(rtlpriv, _comp, _level, _titlestring, _hexdata,   \
 167                      _hexdatalen)                                      \
 168        _rtl_dbg_print_data(rtlpriv, _comp, _level,                     \
 169                            _titlestring, _hexdata, _hexdatalen)
 170
 171#else
 172
 173struct rtl_priv;
 174
 175__printf(4, 5)
 176static inline void rtl_dbg(struct rtl_priv *rtlpriv,
 177                           u64 comp, int level,
 178                           const char *fmt, ...)
 179{
 180}
 181
 182__printf(4, 5)
 183static inline void RTPRINT(struct rtl_priv *rtlpriv,
 184                           int dbgtype, int dbgflag,
 185                           const char *fmt, ...)
 186{
 187}
 188
 189static inline void RT_PRINT_DATA(struct rtl_priv *rtlpriv,
 190                                 u64 comp, int level,
 191                                 const char *titlestring,
 192                                 const void *hexdata, size_t hexdatalen)
 193{
 194}
 195
 196#endif
 197
 198#ifdef CONFIG_RTLWIFI_DEBUG
 199void rtl_debug_add_one(struct ieee80211_hw *hw);
 200void rtl_debug_remove_one(struct ieee80211_hw *hw);
 201void rtl_debugfs_add_topdir(void);
 202void rtl_debugfs_remove_topdir(void);
 203#else
 204#define rtl_debug_add_one(hw)
 205#define rtl_debug_remove_one(hw)
 206#define rtl_debugfs_add_topdir()
 207#define rtl_debugfs_remove_topdir()
 208#endif
 209#endif
 210