blob: 971ff23b600791228fd3d4978727945ea4faa6ce [file] [log] [blame]
Kalle Valo5e3dd152013-06-12 20:52:10 +03001/*
2 * Copyright (c) 2005-2011 Atheros Communications Inc.
3 * Copyright (c) 2011-2013 Qualcomm Atheros, Inc.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18#if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
19
20#include <linux/tracepoint.h>
Michal Kaziord35a6c12014-09-02 11:00:21 +030021#include "core.h"
Kalle Valo5e3dd152013-06-12 20:52:10 +030022
23#define _TRACE_H_
24
25/* create empty functions when tracing is disabled */
26#if !defined(CONFIG_ATH10K_TRACING)
27#undef TRACE_EVENT
28#define TRACE_EVENT(name, proto, ...) \
29static inline void trace_ ## name(proto) {}
30#undef DECLARE_EVENT_CLASS
31#define DECLARE_EVENT_CLASS(...)
32#undef DEFINE_EVENT
33#define DEFINE_EVENT(evt_class, name, proto, ...) \
34static inline void trace_ ## name(proto) {}
35#endif /* !CONFIG_ATH10K_TRACING || __CHECKER__ */
36
37#undef TRACE_SYSTEM
38#define TRACE_SYSTEM ath10k
39
40#define ATH10K_MSG_MAX 200
41
42DECLARE_EVENT_CLASS(ath10k_log_event,
Michal Kaziord35a6c12014-09-02 11:00:21 +030043 TP_PROTO(struct ath10k *ar, struct va_format *vaf),
44 TP_ARGS(ar, vaf),
Kalle Valo5e3dd152013-06-12 20:52:10 +030045 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +030046 __string(device, dev_name(ar->dev))
47 __string(driver, dev_driver_string(ar->dev))
Kalle Valo5e3dd152013-06-12 20:52:10 +030048 __dynamic_array(char, msg, ATH10K_MSG_MAX)
49 ),
50 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +030051 __assign_str(device, dev_name(ar->dev));
52 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo5e3dd152013-06-12 20:52:10 +030053 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
54 ATH10K_MSG_MAX,
55 vaf->fmt,
56 *vaf->va) >= ATH10K_MSG_MAX);
57 ),
Michal Kaziord35a6c12014-09-02 11:00:21 +030058 TP_printk(
59 "%s %s %s",
60 __get_str(driver),
61 __get_str(device),
62 __get_str(msg)
63 )
Kalle Valo5e3dd152013-06-12 20:52:10 +030064);
65
66DEFINE_EVENT(ath10k_log_event, ath10k_log_err,
Michal Kaziord35a6c12014-09-02 11:00:21 +030067 TP_PROTO(struct ath10k *ar, struct va_format *vaf),
68 TP_ARGS(ar, vaf)
Kalle Valo5e3dd152013-06-12 20:52:10 +030069);
70
71DEFINE_EVENT(ath10k_log_event, ath10k_log_warn,
Michal Kaziord35a6c12014-09-02 11:00:21 +030072 TP_PROTO(struct ath10k *ar, struct va_format *vaf),
73 TP_ARGS(ar, vaf)
Kalle Valo5e3dd152013-06-12 20:52:10 +030074);
75
76DEFINE_EVENT(ath10k_log_event, ath10k_log_info,
Michal Kaziord35a6c12014-09-02 11:00:21 +030077 TP_PROTO(struct ath10k *ar, struct va_format *vaf),
78 TP_ARGS(ar, vaf)
Kalle Valo5e3dd152013-06-12 20:52:10 +030079);
80
81TRACE_EVENT(ath10k_log_dbg,
Michal Kaziord35a6c12014-09-02 11:00:21 +030082 TP_PROTO(struct ath10k *ar, unsigned int level, struct va_format *vaf),
83 TP_ARGS(ar, level, vaf),
Kalle Valo5e3dd152013-06-12 20:52:10 +030084 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +030085 __string(device, dev_name(ar->dev))
86 __string(driver, dev_driver_string(ar->dev))
Kalle Valo5e3dd152013-06-12 20:52:10 +030087 __field(unsigned int, level)
88 __dynamic_array(char, msg, ATH10K_MSG_MAX)
89 ),
90 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +030091 __assign_str(device, dev_name(ar->dev));
92 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo5e3dd152013-06-12 20:52:10 +030093 __entry->level = level;
94 WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
95 ATH10K_MSG_MAX,
96 vaf->fmt,
97 *vaf->va) >= ATH10K_MSG_MAX);
98 ),
Michal Kaziord35a6c12014-09-02 11:00:21 +030099 TP_printk(
100 "%s %s %s",
101 __get_str(driver),
102 __get_str(device),
103 __get_str(msg)
104 )
Kalle Valo5e3dd152013-06-12 20:52:10 +0300105);
106
107TRACE_EVENT(ath10k_log_dbg_dump,
Michal Kaziord35a6c12014-09-02 11:00:21 +0300108 TP_PROTO(struct ath10k *ar, const char *msg, const char *prefix,
Kalle Valo5e3dd152013-06-12 20:52:10 +0300109 const void *buf, size_t buf_len),
110
Michal Kaziord35a6c12014-09-02 11:00:21 +0300111 TP_ARGS(ar, msg, prefix, buf, buf_len),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300112
113 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300114 __string(device, dev_name(ar->dev))
115 __string(driver, dev_driver_string(ar->dev))
Kalle Valo5e3dd152013-06-12 20:52:10 +0300116 __string(msg, msg)
117 __string(prefix, prefix)
118 __field(size_t, buf_len)
119 __dynamic_array(u8, buf, buf_len)
120 ),
121
122 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300123 __assign_str(device, dev_name(ar->dev));
124 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo5e3dd152013-06-12 20:52:10 +0300125 __assign_str(msg, msg);
126 __assign_str(prefix, prefix);
127 __entry->buf_len = buf_len;
128 memcpy(__get_dynamic_array(buf), buf, buf_len);
129 ),
130
131 TP_printk(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300132 "%s %s %s/%s\n",
133 __get_str(driver),
134 __get_str(device),
135 __get_str(prefix),
136 __get_str(msg)
Kalle Valo5e3dd152013-06-12 20:52:10 +0300137 )
138);
139
140TRACE_EVENT(ath10k_wmi_cmd,
Michal Kaziord35a6c12014-09-02 11:00:21 +0300141 TP_PROTO(struct ath10k *ar, int id, void *buf, size_t buf_len, int ret),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300142
Michal Kaziord35a6c12014-09-02 11:00:21 +0300143 TP_ARGS(ar, id, buf, buf_len, ret),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300144
145 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300146 __string(device, dev_name(ar->dev))
147 __string(driver, dev_driver_string(ar->dev))
Kalle Valo5e3dd152013-06-12 20:52:10 +0300148 __field(unsigned int, id)
149 __field(size_t, buf_len)
150 __dynamic_array(u8, buf, buf_len)
Michal Kazior9e84f652013-09-19 09:44:09 +0200151 __field(int, ret)
Kalle Valo5e3dd152013-06-12 20:52:10 +0300152 ),
153
154 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300155 __assign_str(device, dev_name(ar->dev));
156 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo5e3dd152013-06-12 20:52:10 +0300157 __entry->id = id;
158 __entry->buf_len = buf_len;
Michal Kaziorbe8b3942013-09-13 14:16:54 +0200159 __entry->ret = ret;
Kalle Valo5e3dd152013-06-12 20:52:10 +0300160 memcpy(__get_dynamic_array(buf), buf, buf_len);
161 ),
162
163 TP_printk(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300164 "%s %s id %d len %zu ret %d",
165 __get_str(driver),
166 __get_str(device),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300167 __entry->id,
Michal Kaziorbe8b3942013-09-13 14:16:54 +0200168 __entry->buf_len,
169 __entry->ret
Kalle Valo5e3dd152013-06-12 20:52:10 +0300170 )
171);
172
173TRACE_EVENT(ath10k_wmi_event,
Michal Kaziord35a6c12014-09-02 11:00:21 +0300174 TP_PROTO(struct ath10k *ar, int id, void *buf, size_t buf_len),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300175
Michal Kaziord35a6c12014-09-02 11:00:21 +0300176 TP_ARGS(ar, id, buf, buf_len),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300177
178 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300179 __string(device, dev_name(ar->dev))
180 __string(driver, dev_driver_string(ar->dev))
Kalle Valo5e3dd152013-06-12 20:52:10 +0300181 __field(unsigned int, id)
182 __field(size_t, buf_len)
183 __dynamic_array(u8, buf, buf_len)
184 ),
185
186 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300187 __assign_str(device, dev_name(ar->dev));
188 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo5e3dd152013-06-12 20:52:10 +0300189 __entry->id = id;
190 __entry->buf_len = buf_len;
191 memcpy(__get_dynamic_array(buf), buf, buf_len);
192 ),
193
194 TP_printk(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300195 "%s %s id %d len %zu",
196 __get_str(driver),
197 __get_str(device),
Kalle Valo5e3dd152013-06-12 20:52:10 +0300198 __entry->id,
199 __entry->buf_len
200 )
201);
202
Kalle Valoa9bf0502013-09-03 11:43:55 +0300203TRACE_EVENT(ath10k_htt_stats,
Michal Kaziord35a6c12014-09-02 11:00:21 +0300204 TP_PROTO(struct ath10k *ar, void *buf, size_t buf_len),
Kalle Valoa9bf0502013-09-03 11:43:55 +0300205
Michal Kaziord35a6c12014-09-02 11:00:21 +0300206 TP_ARGS(ar, buf, buf_len),
Kalle Valoa9bf0502013-09-03 11:43:55 +0300207
208 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300209 __string(device, dev_name(ar->dev))
210 __string(driver, dev_driver_string(ar->dev))
Kalle Valoa9bf0502013-09-03 11:43:55 +0300211 __field(size_t, buf_len)
212 __dynamic_array(u8, buf, buf_len)
213 ),
214
215 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300216 __assign_str(device, dev_name(ar->dev));
217 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valoa9bf0502013-09-03 11:43:55 +0300218 __entry->buf_len = buf_len;
219 memcpy(__get_dynamic_array(buf), buf, buf_len);
220 ),
221
222 TP_printk(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300223 "%s %s len %zu",
224 __get_str(driver),
225 __get_str(device),
Kalle Valoa9bf0502013-09-03 11:43:55 +0300226 __entry->buf_len
227 )
228);
229
Kalle Valo869526b2014-01-03 12:59:26 +0200230TRACE_EVENT(ath10k_wmi_dbglog,
Michal Kaziord35a6c12014-09-02 11:00:21 +0300231 TP_PROTO(struct ath10k *ar, void *buf, size_t buf_len),
Kalle Valo869526b2014-01-03 12:59:26 +0200232
Michal Kaziord35a6c12014-09-02 11:00:21 +0300233 TP_ARGS(ar, buf, buf_len),
Kalle Valo869526b2014-01-03 12:59:26 +0200234
235 TP_STRUCT__entry(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300236 __string(device, dev_name(ar->dev))
237 __string(driver, dev_driver_string(ar->dev))
Kalle Valo869526b2014-01-03 12:59:26 +0200238 __field(size_t, buf_len)
239 __dynamic_array(u8, buf, buf_len)
240 ),
241
242 TP_fast_assign(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300243 __assign_str(device, dev_name(ar->dev));
244 __assign_str(driver, dev_driver_string(ar->dev));
Kalle Valo869526b2014-01-03 12:59:26 +0200245 __entry->buf_len = buf_len;
246 memcpy(__get_dynamic_array(buf), buf, buf_len);
247 ),
248
249 TP_printk(
Michal Kaziord35a6c12014-09-02 11:00:21 +0300250 "%s %s len %zu",
251 __get_str(driver),
252 __get_str(device),
Kalle Valo869526b2014-01-03 12:59:26 +0200253 __entry->buf_len
254 )
255);
256
Rajkumar Manoharanbfdd7932014-10-03 08:02:40 +0300257TRACE_EVENT(ath10k_htt_pktlog,
258 TP_PROTO(struct ath10k *ar, void *buf, u16 buf_len),
259
260 TP_ARGS(ar, buf, buf_len),
261
262 TP_STRUCT__entry(
263 __string(device, dev_name(ar->dev))
264 __string(driver, dev_driver_string(ar->dev))
265 __field(u16, buf_len)
266 __dynamic_array(u8, pktlog, buf_len)
267 ),
268
269 TP_fast_assign(
270 __assign_str(device, dev_name(ar->dev));
271 __assign_str(driver, dev_driver_string(ar->dev));
272 __entry->buf_len = buf_len;
273 memcpy(__get_dynamic_array(pktlog), buf, buf_len);
274 ),
275
276 TP_printk(
277 "%s %s size %hu",
278 __get_str(driver),
279 __get_str(device),
280 __entry->buf_len
281 )
282);
283
Kalle Valo5e3dd152013-06-12 20:52:10 +0300284#endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/
285
286/* we don't want to use include/trace/events */
287#undef TRACE_INCLUDE_PATH
288#define TRACE_INCLUDE_PATH .
289#undef TRACE_INCLUDE_FILE
290#define TRACE_INCLUDE_FILE trace
291
292/* This part must be outside protection */
293#include <trace/define_trace.h>