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

« back to all changes in this revision

Viewing changes to drivers/net/wireless/iwlwifi/iwl-devtrace.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
 *
 
3
 * Copyright(c) 2009 - 2011 Intel Corporation. All rights reserved.
 
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
 * You should have received a copy of the GNU General Public License along with
 
15
 * this program; if not, write to the Free Software Foundation, Inc.,
 
16
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 
17
 *
 
18
 * The full GNU General Public License is included in this distribution in the
 
19
 * file called LICENSE.
 
20
 *
 
21
 * Contact Information:
 
22
 *  Intel Linux Wireless <ilw@linux.intel.com>
 
23
 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 
24
 *
 
25
 *****************************************************************************/
 
26
 
 
27
#if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ)
 
28
#define __IWLWIFI_DEVICE_TRACE
 
29
 
 
30
#include <linux/tracepoint.h>
 
31
 
 
32
struct iwl_priv;
 
33
 
 
34
#if !defined(CONFIG_IWLWIFI_DEVICE_TRACING) || defined(__CHECKER__)
 
35
#undef TRACE_EVENT
 
36
#define TRACE_EVENT(name, proto, ...) \
 
37
static inline void trace_ ## name(proto) {}
 
38
#endif
 
39
 
 
40
#define PRIV_ENTRY      __field(struct iwl_priv *, priv)
 
41
#define PRIV_ASSIGN     __entry->priv = priv
 
42
 
 
43
#undef TRACE_SYSTEM
 
44
#define TRACE_SYSTEM iwlwifi_io
 
45
 
 
46
TRACE_EVENT(iwlwifi_dev_ioread32,
 
47
        TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val),
 
48
        TP_ARGS(priv, offs, val),
 
49
        TP_STRUCT__entry(
 
50
                PRIV_ENTRY
 
51
                __field(u32, offs)
 
52
                __field(u32, val)
 
53
        ),
 
54
        TP_fast_assign(
 
55
                PRIV_ASSIGN;
 
56
                __entry->offs = offs;
 
57
                __entry->val = val;
 
58
        ),
 
59
        TP_printk("[%p] read io[%#x] = %#x", __entry->priv, __entry->offs, __entry->val)
 
60
);
 
61
 
 
62
TRACE_EVENT(iwlwifi_dev_iowrite8,
 
63
        TP_PROTO(struct iwl_priv *priv, u32 offs, u8 val),
 
64
        TP_ARGS(priv, offs, val),
 
65
        TP_STRUCT__entry(
 
66
                PRIV_ENTRY
 
67
                __field(u32, offs)
 
68
                __field(u8, val)
 
69
        ),
 
70
        TP_fast_assign(
 
71
                PRIV_ASSIGN;
 
72
                __entry->offs = offs;
 
73
                __entry->val = val;
 
74
        ),
 
75
        TP_printk("[%p] write io[%#x] = %#x)", __entry->priv, __entry->offs, __entry->val)
 
76
);
 
77
 
 
78
TRACE_EVENT(iwlwifi_dev_iowrite32,
 
79
        TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val),
 
80
        TP_ARGS(priv, offs, val),
 
81
        TP_STRUCT__entry(
 
82
                PRIV_ENTRY
 
83
                __field(u32, offs)
 
84
                __field(u32, val)
 
85
        ),
 
86
        TP_fast_assign(
 
87
                PRIV_ASSIGN;
 
88
                __entry->offs = offs;
 
89
                __entry->val = val;
 
90
        ),
 
91
        TP_printk("[%p] write io[%#x] = %#x)", __entry->priv, __entry->offs, __entry->val)
 
92
);
 
93
 
 
94
#undef TRACE_SYSTEM
 
95
#define TRACE_SYSTEM iwlwifi_ucode
 
96
 
 
97
TRACE_EVENT(iwlwifi_dev_ucode_cont_event,
 
98
        TP_PROTO(struct iwl_priv *priv, u32 time, u32 data, u32 ev),
 
99
        TP_ARGS(priv, time, data, ev),
 
100
        TP_STRUCT__entry(
 
101
                PRIV_ENTRY
 
102
 
 
103
                __field(u32, time)
 
104
                __field(u32, data)
 
105
                __field(u32, ev)
 
106
        ),
 
107
        TP_fast_assign(
 
108
                PRIV_ASSIGN;
 
109
                __entry->time = time;
 
110
                __entry->data = data;
 
111
                __entry->ev = ev;
 
112
        ),
 
113
        TP_printk("[%p] EVT_LOGT:%010u:0x%08x:%04u",
 
114
                  __entry->priv, __entry->time, __entry->data, __entry->ev)
 
115
);
 
116
 
 
117
TRACE_EVENT(iwlwifi_dev_ucode_wrap_event,
 
118
        TP_PROTO(struct iwl_priv *priv, u32 wraps, u32 n_entry, u32 p_entry),
 
119
        TP_ARGS(priv, wraps, n_entry, p_entry),
 
120
        TP_STRUCT__entry(
 
121
                PRIV_ENTRY
 
122
 
 
123
                __field(u32, wraps)
 
124
                __field(u32, n_entry)
 
125
                __field(u32, p_entry)
 
126
        ),
 
127
        TP_fast_assign(
 
128
                PRIV_ASSIGN;
 
129
                __entry->wraps = wraps;
 
130
                __entry->n_entry = n_entry;
 
131
                __entry->p_entry = p_entry;
 
132
        ),
 
133
        TP_printk("[%p] wraps=#%02d n=0x%X p=0x%X",
 
134
                  __entry->priv, __entry->wraps, __entry->n_entry,
 
135
                  __entry->p_entry)
 
136
);
 
137
 
 
138
#undef TRACE_SYSTEM
 
139
#define TRACE_SYSTEM iwlwifi
 
140
 
 
141
TRACE_EVENT(iwlwifi_dev_hcmd,
 
142
        TP_PROTO(struct iwl_priv *priv, u32 flags,
 
143
                 const void *hcmd0, size_t len0,
 
144
                 const void *hcmd1, size_t len1,
 
145
                 const void *hcmd2, size_t len2),
 
146
        TP_ARGS(priv, flags, hcmd0, len0, hcmd1, len1, hcmd2, len2),
 
147
        TP_STRUCT__entry(
 
148
                PRIV_ENTRY
 
149
                __dynamic_array(u8, hcmd0, len0)
 
150
                __dynamic_array(u8, hcmd1, len1)
 
151
                __dynamic_array(u8, hcmd2, len2)
 
152
                __field(u32, flags)
 
153
        ),
 
154
        TP_fast_assign(
 
155
                PRIV_ASSIGN;
 
156
                memcpy(__get_dynamic_array(hcmd0), hcmd0, len0);
 
157
                memcpy(__get_dynamic_array(hcmd1), hcmd1, len1);
 
158
                memcpy(__get_dynamic_array(hcmd2), hcmd2, len2);
 
159
                __entry->flags = flags;
 
160
        ),
 
161
        TP_printk("[%p] hcmd %#.2x (%ssync)",
 
162
                  __entry->priv, ((u8 *)__get_dynamic_array(hcmd0))[0],
 
163
                  __entry->flags & CMD_ASYNC ? "a" : "")
 
164
);
 
165
 
 
166
TRACE_EVENT(iwlwifi_dev_rx,
 
167
        TP_PROTO(struct iwl_priv *priv, void *rxbuf, size_t len),
 
168
        TP_ARGS(priv, rxbuf, len),
 
169
        TP_STRUCT__entry(
 
170
                PRIV_ENTRY
 
171
                __dynamic_array(u8, rxbuf, len)
 
172
        ),
 
173
        TP_fast_assign(
 
174
                PRIV_ASSIGN;
 
175
                memcpy(__get_dynamic_array(rxbuf), rxbuf, len);
 
176
        ),
 
177
        TP_printk("[%p] RX cmd %#.2x",
 
178
                  __entry->priv, ((u8 *)__get_dynamic_array(rxbuf))[4])
 
179
);
 
180
 
 
181
TRACE_EVENT(iwlwifi_dev_tx,
 
182
        TP_PROTO(struct iwl_priv *priv, void *tfd, size_t tfdlen,
 
183
                 void *buf0, size_t buf0_len,
 
184
                 void *buf1, size_t buf1_len),
 
185
        TP_ARGS(priv, tfd, tfdlen, buf0, buf0_len, buf1, buf1_len),
 
186
        TP_STRUCT__entry(
 
187
                PRIV_ENTRY
 
188
 
 
189
                __field(size_t, framelen)
 
190
                __dynamic_array(u8, tfd, tfdlen)
 
191
 
 
192
                /*
 
193
                 * Do not insert between or below these items,
 
194
                 * we want to keep the frame together (except
 
195
                 * for the possible padding).
 
196
                 */
 
197
                __dynamic_array(u8, buf0, buf0_len)
 
198
                __dynamic_array(u8, buf1, buf1_len)
 
199
        ),
 
200
        TP_fast_assign(
 
201
                PRIV_ASSIGN;
 
202
                __entry->framelen = buf0_len + buf1_len;
 
203
                memcpy(__get_dynamic_array(tfd), tfd, tfdlen);
 
204
                memcpy(__get_dynamic_array(buf0), buf0, buf0_len);
 
205
                memcpy(__get_dynamic_array(buf1), buf1, buf1_len);
 
206
        ),
 
207
        TP_printk("[%p] TX %.2x (%zu bytes)",
 
208
                  __entry->priv,
 
209
                  ((u8 *)__get_dynamic_array(buf0))[0],
 
210
                  __entry->framelen)
 
211
);
 
212
 
 
213
TRACE_EVENT(iwlwifi_dev_ucode_error,
 
214
        TP_PROTO(struct iwl_priv *priv, u32 desc, u32 tsf_low,
 
215
                 u32 data1, u32 data2, u32 line, u32 blink1,
 
216
                 u32 blink2, u32 ilink1, u32 ilink2, u32 bcon_time,
 
217
                 u32 gp1, u32 gp2, u32 gp3, u32 ucode_ver, u32 hw_ver,
 
218
                 u32 brd_ver),
 
219
        TP_ARGS(priv, desc, tsf_low, data1, data2, line,
 
220
                blink1, blink2, ilink1, ilink2, bcon_time, gp1, gp2,
 
221
                gp3, ucode_ver, hw_ver, brd_ver),
 
222
        TP_STRUCT__entry(
 
223
                PRIV_ENTRY
 
224
                __field(u32, desc)
 
225
                __field(u32, tsf_low)
 
226
                __field(u32, data1)
 
227
                __field(u32, data2)
 
228
                __field(u32, line)
 
229
                __field(u32, blink1)
 
230
                __field(u32, blink2)
 
231
                __field(u32, ilink1)
 
232
                __field(u32, ilink2)
 
233
                __field(u32, bcon_time)
 
234
                __field(u32, gp1)
 
235
                __field(u32, gp2)
 
236
                __field(u32, gp3)
 
237
                __field(u32, ucode_ver)
 
238
                __field(u32, hw_ver)
 
239
                __field(u32, brd_ver)
 
240
        ),
 
241
        TP_fast_assign(
 
242
                PRIV_ASSIGN;
 
243
                __entry->desc = desc;
 
244
                __entry->tsf_low = tsf_low;
 
245
                __entry->data1 = data1;
 
246
                __entry->data2 = data2;
 
247
                __entry->line = line;
 
248
                __entry->blink1 = blink1;
 
249
                __entry->blink2 = blink2;
 
250
                __entry->ilink1 = ilink1;
 
251
                __entry->ilink2 = ilink2;
 
252
                __entry->bcon_time = bcon_time;
 
253
                __entry->gp1 = gp1;
 
254
                __entry->gp2 = gp2;
 
255
                __entry->gp3 = gp3;
 
256
                __entry->ucode_ver = ucode_ver;
 
257
                __entry->hw_ver = hw_ver;
 
258
                __entry->brd_ver = brd_ver;
 
259
        ),
 
260
        TP_printk("[%p] #%02d %010u data 0x%08X 0x%08X line %u, "
 
261
                  "blink 0x%05X 0x%05X ilink 0x%05X 0x%05X "
 
262
                  "bcon_tm %010u gp 0x%08X 0x%08X 0x%08X uCode 0x%08X "
 
263
                  "hw 0x%08X brd 0x%08X",
 
264
                  __entry->priv, __entry->desc, __entry->tsf_low,
 
265
                  __entry->data1,
 
266
                  __entry->data2, __entry->line, __entry->blink1,
 
267
                  __entry->blink2, __entry->ilink1, __entry->ilink2,
 
268
                  __entry->bcon_time, __entry->gp1, __entry->gp2,
 
269
                  __entry->gp3, __entry->ucode_ver, __entry->hw_ver,
 
270
                  __entry->brd_ver)
 
271
);
 
272
 
 
273
TRACE_EVENT(iwlwifi_dev_ucode_event,
 
274
        TP_PROTO(struct iwl_priv *priv, u32 time, u32 data, u32 ev),
 
275
        TP_ARGS(priv, time, data, ev),
 
276
        TP_STRUCT__entry(
 
277
                PRIV_ENTRY
 
278
 
 
279
                __field(u32, time)
 
280
                __field(u32, data)
 
281
                __field(u32, ev)
 
282
        ),
 
283
        TP_fast_assign(
 
284
                PRIV_ASSIGN;
 
285
                __entry->time = time;
 
286
                __entry->data = data;
 
287
                __entry->ev = ev;
 
288
        ),
 
289
        TP_printk("[%p] EVT_LOGT:%010u:0x%08x:%04u",
 
290
                  __entry->priv, __entry->time, __entry->data, __entry->ev)
 
291
);
 
292
#endif /* __IWLWIFI_DEVICE_TRACE */
 
293
 
 
294
#undef TRACE_INCLUDE_PATH
 
295
#define TRACE_INCLUDE_PATH .
 
296
#undef TRACE_INCLUDE_FILE
 
297
#define TRACE_INCLUDE_FILE iwl-devtrace
 
298
#include <trace/define_trace.h>