1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
/*-
* Copyright (c) 2020-2021 The FreeBSD Foundation
*
* This software was developed by Björn Zeeb under sponsorship from
* the FreeBSD Foundation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _IWL_DEBUG_H
#define _IWL_DEBUG_H
#if defined(__FreeBSD__)
#ifdef CONFIG_IWLWIFI_DEBUG
#include <sys/types.h>
#endif
#endif
#include <linux/device.h>
enum iwl_dl {
IWL_DL_ASSOC = 0x00000001,
IWL_DL_CALIB = 0x00000002,
IWL_DL_COEX = 0x00000004,
IWL_DL_WOWLAN = 0x00000008,
IWL_DL_DROP = 0x00000010,
IWL_DL_EEPROM = 0x00000020,
IWL_DL_FW = 0x00000040,
/* = 0x00000080, */
IWL_DL_HC = 0x00000100,
IWL_DL_HT = 0x00000200,
IWL_DL_INFO = 0x00000400,
IWL_DL_ISR = 0x00000800,
IWL_DL_LAR = 0x00001000,
IWL_DL_MAC80211 = 0x00002000,
IWL_DL_POWER = 0x00004000,
IWL_DL_QUOTA = 0x00008000,
IWL_DL_RADIO = 0x00010000,
IWL_DL_RATE = 0x00020000,
IWL_DL_RF_KILL = 0x00040000,
IWL_DL_RX = 0x00080000,
IWL_DL_SCAN = 0x00100000,
IWL_DL_STATS = 0x00200000,
/* = 0x00400000, */
IWL_DL_TDLS = 0x00800000,
IWL_DL_TE = 0x01000000,
IWL_DL_TEMP = 0x02000000,
IWL_DL_TPT = 0x04000000,
IWL_DL_TX = 0x08000000,
IWL_DL_TX_QUEUES = 0x10000000,
IWL_DL_TX_REPLY = 0x20000000,
IWL_DL_WEP = 0x40000000,
IWL_DL_PCI_RW = 0x80000000,
IWL_DL_ANY = 0x7fffffff,
};
enum iwl_err_mode {
IWL_ERR_MODE_RATELIMIT,
IWL_ERR_MODE_REGULAR,
IWL_ERR_MODE_RFKILL, /* XXX we do not pass that from anywhere? */
};
void __iwl_crit(struct device *, const char *, ...);
void __iwl_info(struct device *, const char *, ...);
void __iwl_warn(struct device *, const char *, ...);
void __iwl_err(struct device *, enum iwl_err_mode, const char *, ...);
#define IWL_CRIT(_subsys, _fmt, ...) \
__iwl_crit((_subsys)->dev, _fmt, ##__VA_ARGS__)
#define IWL_INFO(_subsys, _fmt, ...) \
__iwl_info((_subsys)->dev, _fmt, ##__VA_ARGS__)
#define IWL_WARN(_subsys, _fmt, ...) \
__iwl_warn((_subsys)->dev, _fmt, ##__VA_ARGS__)
/* XXX Not sure what the two bools are good for if never passed. */
#define __IWL_ERR_DEV(_dev, _mode, _fmt, ...) \
__iwl_err((_dev), IWL_ERR_MODE_REGULAR, _fmt, ##__VA_ARGS__)
#define IWL_ERR_DEV(_dev, _fmt, ...) \
__IWL_ERR_DEV(_dev, IWL_ERR_MODE_REGULAR, _fmt, ##__VA_ARGS__)
#define IWL_ERR(_subsys, _fmt, ...) \
IWL_ERR_DEV((_subsys)->dev, _fmt, ##__VA_ARGS__)
#define IWL_ERR_LIMIT(_subsys, _fmt, ...) \
__IWL_ERR_DEV((_subsys)->dev, IWL_ERR_MODE_RATELIMIT, \
_fmt, ##__VA_ARGS__)
#define iwl_print_hex_error(_subsys, _pkt, _n) /* XXX-BZ TODO */
#ifdef CONFIG_IWLWIFI_DEBUG
bool iwl_have_debug_level(enum iwl_dl);
#if defined(__linux__)
void iwl_print_hex_dump(void *, enum iwl_dl, const char *, uint8_t *, size_t);
#elif defined(__FreeBSD__)
void iwl_print_hex_dump(void *, enum iwl_dl, const char *, const uint8_t *, size_t);
#endif
void __iwl_dbg(struct device *, u32, bool, const char *, const char *fmt, ...);
#define IWL_DPRINTF_DEV_PREFIX(_dev, _e, _prefix, _fmt, ...) \
__iwl_dbg(_dev, _e, false, __func__, #_prefix " " _fmt, ##__VA_ARGS__)
#define IWL_DPRINTF_DEV(_dev, _e, _fmt, ...) \
IWL_DPRINTF_DEV_PREFIX(_dev, _e, _e, _fmt, ##__VA_ARGS__)
#define IWL_DPRINTF(_subsys, _e, _fmt, ...) \
IWL_DPRINTF_DEV((_subsys)->dev, _e, _fmt, ##__VA_ARGS__)
#define IWL_DPRINTF_PREFIX(_subsys, _e, _prefix, _fmt, ...) \
IWL_DPRINTF_DEV_PREFIX((_subsys)->dev, _e, _prefix, _fmt, ##__VA_ARGS__)
#else /* !CONFIG_IWLWIFI_DEBUG */
#define IWL_DPRINTF_DEV(_dev, _e, _fmt, ...)
#define IWL_DPRINTF(_subsys, _e, _fmt, ...)
#define IWL_DPRINTF_PREFIX(_subsys, _e, _prefix, _fmt, ...)
#endif /* CONFIG_IWLWIFI_DEBUG */
#define IWL_DEBUG_ASSOC(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_ASSOC, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_CALIB(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_CALIB, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_COEX(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_COEX, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_DEV(_dev, _level, _fmt, ...) \
IWL_DPRINTF_DEV((_dev), (_level), _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_DROP(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_DROP, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_EEPROM(_dev, _fmt, ...) \
IWL_DPRINTF_DEV((_dev), IWL_DL_EEPROM, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_FW(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_FW, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_FW_INFO(_subsys, _fmt, ...) \
IWL_DPRINTF_PREFIX(_subsys, IWL_DL_FW | IWL_DL_INFO, IWL_DL_FW_INFO, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_HC(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_HC, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_HT(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_HT, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_INFO(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_INFO, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_ISR(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_ISR, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_LAR(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_LAR, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_MAC80211(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_MAC80211, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_POWER(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_POWER, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_QUOTA(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_QUOTA, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_RADIO(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_RADIO, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_RATE(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_RATE, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_RF_KILL(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_RF_KILL, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_RX(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_RX, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_SCAN(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_SCAN, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_STATS(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_STATS, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_STATS_LIMIT(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_STATS, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TDLS(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TDLS, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TE(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TE, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TEMP(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TEMP, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TPT(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TPT, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TX(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TX, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TX_QUEUES(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TX_QUEUES, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_TX_REPLY(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_TX_REPLY, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_WEP(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_WEP, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_WOWLAN(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_WOWLAN, _fmt, ##__VA_ARGS__)
#define IWL_DEBUG_PCI_RW(_subsys, _fmt, ...) \
IWL_DPRINTF(_subsys, IWL_DL_PCI_RW, _fmt, ##__VA_ARGS__)
#endif /* _IWL_DEBUG_H */
|