~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/net/wireless/ath/ath6kl/debug.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2011 Atheros Communications Inc.
 
3
 *
 
4
 * Permission to use, copy, modify, and/or distribute this software for any
 
5
 * purpose with or without fee is hereby granted, provided that the above
 
6
 * copyright notice and this permission notice appear in all copies.
 
7
 *
 
8
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 
9
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 
10
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 
11
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 
12
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 
13
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 
14
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
15
 */
 
16
 
 
17
#ifndef DEBUG_H
 
18
#define DEBUG_H
 
19
 
 
20
#include "htc_hif.h"
 
21
 
 
22
enum ATH6K_DEBUG_MASK {
 
23
        ATH6KL_DBG_WLAN_CONNECT = BIT(0),     /* wlan connect */
 
24
        ATH6KL_DBG_WLAN_SCAN    = BIT(1),     /* wlan scan */
 
25
        ATH6KL_DBG_WLAN_TX      = BIT(2),     /* wlan tx */
 
26
        ATH6KL_DBG_WLAN_RX      = BIT(3),     /* wlan rx */
 
27
        ATH6KL_DBG_BMI          = BIT(4),     /* bmi tracing */
 
28
        ATH6KL_DBG_HTC_SEND     = BIT(5),     /* htc send */
 
29
        ATH6KL_DBG_HTC_RECV     = BIT(6),     /* htc recv */
 
30
        ATH6KL_DBG_IRQ          = BIT(7),     /* interrupt processing */
 
31
        ATH6KL_DBG_PM           = BIT(8),     /* power management */
 
32
        ATH6KL_DBG_WLAN_NODE    = BIT(9),     /* general wlan node tracing */
 
33
        ATH6KL_DBG_WMI          = BIT(10),    /* wmi tracing */
 
34
        ATH6KL_DBG_TRC          = BIT(11),    /* generic func tracing */
 
35
        ATH6KL_DBG_SCATTER      = BIT(12),    /* hif scatter tracing */
 
36
        ATH6KL_DBG_WLAN_CFG     = BIT(13),    /* cfg80211 i/f file tracing */
 
37
        ATH6KL_DBG_RAW_BYTES    = BIT(14),    /* dump tx/rx frames */
 
38
        ATH6KL_DBG_AGGR         = BIT(15),    /* aggregation */
 
39
        ATH6KL_DBG_SDIO         = BIT(16),
 
40
        ATH6KL_DBG_SDIO_DUMP    = BIT(17),
 
41
        ATH6KL_DBG_BOOT         = BIT(18),    /* driver init and fw boot */
 
42
        ATH6KL_DBG_WMI_DUMP     = BIT(19),
 
43
        ATH6KL_DBG_ANY          = 0xffffffff  /* enable all logs */
 
44
};
 
45
 
 
46
extern unsigned int debug_mask;
 
47
extern __printf(2, 3)
 
48
int ath6kl_printk(const char *level, const char *fmt, ...);
 
49
 
 
50
#define ath6kl_info(fmt, ...)                           \
 
51
        ath6kl_printk(KERN_INFO, fmt, ##__VA_ARGS__)
 
52
#define ath6kl_err(fmt, ...)                                    \
 
53
        ath6kl_printk(KERN_ERR, fmt, ##__VA_ARGS__)
 
54
#define ath6kl_warn(fmt, ...)                                   \
 
55
        ath6kl_printk(KERN_WARNING, fmt, ##__VA_ARGS__)
 
56
 
 
57
#define AR_DBG_LVL_CHECK(mask)  (debug_mask & mask)
 
58
 
 
59
enum ath6kl_war {
 
60
        ATH6KL_WAR_INVALID_RATE,
 
61
};
 
62
 
 
63
#ifdef CONFIG_ATH6KL_DEBUG
 
64
#define ath6kl_dbg(mask, fmt, ...)                                      \
 
65
        ({                                                              \
 
66
         int rtn;                                                       \
 
67
         if (debug_mask & mask)                                         \
 
68
                rtn = ath6kl_printk(KERN_DEBUG, fmt, ##__VA_ARGS__);    \
 
69
         else                                                           \
 
70
                rtn = 0;                                                \
 
71
                                                                        \
 
72
         rtn;                                                           \
 
73
         })
 
74
 
 
75
static inline void ath6kl_dbg_dump(enum ATH6K_DEBUG_MASK mask,
 
76
                                   const char *msg, const char *prefix,
 
77
                                   const void *buf, size_t len)
 
78
{
 
79
        if (debug_mask & mask) {
 
80
                if (msg)
 
81
                        ath6kl_dbg(mask, "%s\n", msg);
 
82
 
 
83
                print_hex_dump_bytes(prefix, DUMP_PREFIX_OFFSET, buf, len);
 
84
        }
 
85
}
 
86
 
 
87
void ath6kl_dump_registers(struct ath6kl_device *dev,
 
88
                           struct ath6kl_irq_proc_registers *irq_proc_reg,
 
89
                           struct ath6kl_irq_enable_reg *irq_en_reg);
 
90
void dump_cred_dist_stats(struct htc_target *target);
 
91
void ath6kl_debug_fwlog_event(struct ath6kl *ar, const void *buf, size_t len);
 
92
void ath6kl_debug_war(struct ath6kl *ar, enum ath6kl_war war);
 
93
int ath6kl_debug_init(struct ath6kl *ar);
 
94
void ath6kl_debug_cleanup(struct ath6kl *ar);
 
95
 
 
96
#else
 
97
static inline int ath6kl_dbg(enum ATH6K_DEBUG_MASK dbg_mask,
 
98
                             const char *fmt, ...)
 
99
{
 
100
        return 0;
 
101
}
 
102
 
 
103
static inline void ath6kl_dbg_dump(enum ATH6K_DEBUG_MASK mask,
 
104
                                   const char *msg, const char *prefix,
 
105
                                   const void *buf, size_t len)
 
106
{
 
107
}
 
108
 
 
109
static inline void ath6kl_dump_registers(struct ath6kl_device *dev,
 
110
                struct ath6kl_irq_proc_registers *irq_proc_reg,
 
111
                struct ath6kl_irq_enable_reg *irq_en_reg)
 
112
{
 
113
 
 
114
}
 
115
static inline void dump_cred_dist_stats(struct htc_target *target)
 
116
{
 
117
}
 
118
 
 
119
static inline void ath6kl_debug_fwlog_event(struct ath6kl *ar,
 
120
                                            const void *buf, size_t len)
 
121
{
 
122
}
 
123
 
 
124
static inline void ath6kl_debug_war(struct ath6kl *ar, enum ath6kl_war war)
 
125
{
 
126
}
 
127
 
 
128
static inline int ath6kl_debug_init(struct ath6kl *ar)
 
129
{
 
130
        return 0;
 
131
}
 
132
 
 
133
static inline void ath6kl_debug_cleanup(struct ath6kl *ar)
 
134
{
 
135
}
 
136
 
 
137
#endif
 
138
#endif