• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/net/wireless/iwlwifi/
1/******************************************************************************
2 *
3 * Copyright(c) 2009 - 2010 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#if !defined(CONFIG_IWLWIFI_DEVICE_TRACING) || defined(__CHECKER__)
33#undef TRACE_EVENT
34#define TRACE_EVENT(name, proto, ...) \
35static inline void trace_ ## name(proto) {}
36#endif
37
38#define PRIV_ENTRY	__field(struct iwl_priv *, priv)
39#define PRIV_ASSIGN	__entry->priv = priv
40
41#undef TRACE_SYSTEM
42#define TRACE_SYSTEM iwlwifi_io
43
44TRACE_EVENT(iwlwifi_dev_ioread32,
45	TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val),
46	TP_ARGS(priv, offs, val),
47	TP_STRUCT__entry(
48		PRIV_ENTRY
49		__field(u32, offs)
50		__field(u32, val)
51	),
52	TP_fast_assign(
53		PRIV_ASSIGN;
54		__entry->offs = offs;
55		__entry->val = val;
56	),
57	TP_printk("[%p] read io[%#x] = %#x", __entry->priv, __entry->offs, __entry->val)
58);
59
60TRACE_EVENT(iwlwifi_dev_iowrite8,
61	TP_PROTO(struct iwl_priv *priv, u32 offs, u8 val),
62	TP_ARGS(priv, offs, val),
63	TP_STRUCT__entry(
64		PRIV_ENTRY
65		__field(u32, offs)
66		__field(u8, val)
67	),
68	TP_fast_assign(
69		PRIV_ASSIGN;
70		__entry->offs = offs;
71		__entry->val = val;
72	),
73	TP_printk("[%p] write io[%#x] = %#x)", __entry->priv, __entry->offs, __entry->val)
74);
75
76TRACE_EVENT(iwlwifi_dev_iowrite32,
77	TP_PROTO(struct iwl_priv *priv, u32 offs, u32 val),
78	TP_ARGS(priv, offs, val),
79	TP_STRUCT__entry(
80		PRIV_ENTRY
81		__field(u32, offs)
82		__field(u32, val)
83	),
84	TP_fast_assign(
85		PRIV_ASSIGN;
86		__entry->offs = offs;
87		__entry->val = val;
88	),
89	TP_printk("[%p] write io[%#x] = %#x)", __entry->priv, __entry->offs, __entry->val)
90);
91
92#undef TRACE_SYSTEM
93#define TRACE_SYSTEM iwlwifi_ucode
94
95TRACE_EVENT(iwlwifi_dev_ucode_cont_event,
96	TP_PROTO(struct iwl_priv *priv, u32 time, u32 data, u32 ev),
97	TP_ARGS(priv, time, data, ev),
98	TP_STRUCT__entry(
99		PRIV_ENTRY
100
101		__field(u32, time)
102		__field(u32, data)
103		__field(u32, ev)
104	),
105	TP_fast_assign(
106		PRIV_ASSIGN;
107		__entry->time = time;
108		__entry->data = data;
109		__entry->ev = ev;
110	),
111	TP_printk("[%p] EVT_LOGT:%010u:0x%08x:%04u",
112		  __entry->priv, __entry->time, __entry->data, __entry->ev)
113);
114
115TRACE_EVENT(iwlwifi_dev_ucode_wrap_event,
116	TP_PROTO(struct iwl_priv *priv, u32 wraps, u32 n_entry, u32 p_entry),
117	TP_ARGS(priv, wraps, n_entry, p_entry),
118	TP_STRUCT__entry(
119		PRIV_ENTRY
120
121		__field(u32, wraps)
122		__field(u32, n_entry)
123		__field(u32, p_entry)
124	),
125	TP_fast_assign(
126		PRIV_ASSIGN;
127		__entry->wraps = wraps;
128		__entry->n_entry = n_entry;
129		__entry->p_entry = p_entry;
130	),
131	TP_printk("[%p] wraps=#%02d n=0x%X p=0x%X",
132		  __entry->priv, __entry->wraps, __entry->n_entry,
133		  __entry->p_entry)
134);
135
136#undef TRACE_SYSTEM
137#define TRACE_SYSTEM iwlwifi
138
139TRACE_EVENT(iwlwifi_dev_hcmd,
140	TP_PROTO(struct iwl_priv *priv, void *hcmd, size_t len, u32 flags),
141	TP_ARGS(priv, hcmd, len, flags),
142	TP_STRUCT__entry(
143		PRIV_ENTRY
144		__dynamic_array(u8, hcmd, len)
145		__field(u32, flags)
146	),
147	TP_fast_assign(
148		PRIV_ASSIGN;
149		memcpy(__get_dynamic_array(hcmd), hcmd, len);
150		__entry->flags = flags;
151	),
152	TP_printk("[%p] hcmd %#.2x (%ssync)",
153		  __entry->priv, ((u8 *)__get_dynamic_array(hcmd))[0],
154		  __entry->flags & CMD_ASYNC ? "a" : "")
155);
156
157TRACE_EVENT(iwlwifi_dev_rx,
158	TP_PROTO(struct iwl_priv *priv, void *rxbuf, size_t len),
159	TP_ARGS(priv, rxbuf, len),
160	TP_STRUCT__entry(
161		PRIV_ENTRY
162		__dynamic_array(u8, rxbuf, len)
163	),
164	TP_fast_assign(
165		PRIV_ASSIGN;
166		memcpy(__get_dynamic_array(rxbuf), rxbuf, len);
167	),
168	TP_printk("[%p] RX cmd %#.2x",
169		  __entry->priv, ((u8 *)__get_dynamic_array(rxbuf))[4])
170);
171
172TRACE_EVENT(iwlwifi_dev_tx,
173	TP_PROTO(struct iwl_priv *priv, void *tfd, size_t tfdlen,
174		 void *buf0, size_t buf0_len,
175		 void *buf1, size_t buf1_len),
176	TP_ARGS(priv, tfd, tfdlen, buf0, buf0_len, buf1, buf1_len),
177	TP_STRUCT__entry(
178		PRIV_ENTRY
179
180		__field(size_t, framelen)
181		__dynamic_array(u8, tfd, tfdlen)
182
183		/*
184		 * Do not insert between or below these items,
185		 * we want to keep the frame together (except
186		 * for the possible padding).
187		 */
188		__dynamic_array(u8, buf0, buf0_len)
189		__dynamic_array(u8, buf1, buf1_len)
190	),
191	TP_fast_assign(
192		PRIV_ASSIGN;
193		__entry->framelen = buf0_len + buf1_len;
194		memcpy(__get_dynamic_array(tfd), tfd, tfdlen);
195		memcpy(__get_dynamic_array(buf0), buf0, buf0_len);
196		memcpy(__get_dynamic_array(buf1), buf1, buf1_len);
197	),
198	TP_printk("[%p] TX %.2x (%zu bytes)",
199		  __entry->priv,
200		  ((u8 *)__get_dynamic_array(buf0))[0],
201		  __entry->framelen)
202);
203
204TRACE_EVENT(iwlwifi_dev_ucode_error,
205	TP_PROTO(struct iwl_priv *priv, u32 desc, u32 time,
206		 u32 data1, u32 data2, u32 line, u32 blink1,
207		 u32 blink2, u32 ilink1, u32 ilink2),
208	TP_ARGS(priv, desc, time, data1, data2, line,
209		blink1, blink2, ilink1, ilink2),
210	TP_STRUCT__entry(
211		PRIV_ENTRY
212		__field(u32, desc)
213		__field(u32, time)
214		__field(u32, data1)
215		__field(u32, data2)
216		__field(u32, line)
217		__field(u32, blink1)
218		__field(u32, blink2)
219		__field(u32, ilink1)
220		__field(u32, ilink2)
221	),
222	TP_fast_assign(
223		PRIV_ASSIGN;
224		__entry->desc = desc;
225		__entry->time = time;
226		__entry->data1 = data1;
227		__entry->data2 = data2;
228		__entry->line = line;
229		__entry->blink1 = blink1;
230		__entry->blink2 = blink2;
231		__entry->ilink1 = ilink1;
232		__entry->ilink2 = ilink2;
233	),
234	TP_printk("[%p] #%02d %010u data 0x%08X 0x%08X line %u, "
235		  "blink 0x%05X 0x%05X ilink 0x%05X 0x%05X",
236		  __entry->priv, __entry->desc, __entry->time, __entry->data1,
237		  __entry->data2, __entry->line, __entry->blink1,
238		  __entry->blink2, __entry->ilink1, __entry->ilink2)
239);
240
241TRACE_EVENT(iwlwifi_dev_ucode_event,
242	TP_PROTO(struct iwl_priv *priv, u32 time, u32 data, u32 ev),
243	TP_ARGS(priv, time, data, ev),
244	TP_STRUCT__entry(
245		PRIV_ENTRY
246
247		__field(u32, time)
248		__field(u32, data)
249		__field(u32, ev)
250	),
251	TP_fast_assign(
252		PRIV_ASSIGN;
253		__entry->time = time;
254		__entry->data = data;
255		__entry->ev = ev;
256	),
257	TP_printk("[%p] EVT_LOGT:%010u:0x%08x:%04u",
258		  __entry->priv, __entry->time, __entry->data, __entry->ev)
259);
260#endif /* __IWLWIFI_DEVICE_TRACE */
261
262#undef TRACE_INCLUDE_PATH
263#define TRACE_INCLUDE_PATH .
264#undef TRACE_INCLUDE_FILE
265#define TRACE_INCLUDE_FILE iwl-devtrace
266#include <trace/define_trace.h>
267