1416cf0b4SKalle Valo #if !defined(_ATH6KL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
2416cf0b4SKalle Valo 
3416cf0b4SKalle Valo #include <net/cfg80211.h>
4416cf0b4SKalle Valo #include <linux/skbuff.h>
5416cf0b4SKalle Valo #include <linux/tracepoint.h>
6416cf0b4SKalle Valo #include "wmi.h"
7416cf0b4SKalle Valo 
8416cf0b4SKalle Valo #if !defined(_ATH6KL_TRACE_H)
9416cf0b4SKalle Valo static inline unsigned int ath6kl_get_wmi_id(void *buf, size_t buf_len)
10416cf0b4SKalle Valo {
11416cf0b4SKalle Valo 	struct wmi_cmd_hdr *hdr = buf;
12416cf0b4SKalle Valo 
13416cf0b4SKalle Valo 	if (buf_len < sizeof(*hdr))
14416cf0b4SKalle Valo 		return 0;
15416cf0b4SKalle Valo 
16416cf0b4SKalle Valo 	return le16_to_cpu(hdr->cmd_id);
17416cf0b4SKalle Valo }
18416cf0b4SKalle Valo #endif /* __ATH6KL_TRACE_H */
19416cf0b4SKalle Valo 
20416cf0b4SKalle Valo #define _ATH6KL_TRACE_H
21416cf0b4SKalle Valo 
22416cf0b4SKalle Valo /* create empty functions when tracing is disabled */
23416cf0b4SKalle Valo #if !defined(CONFIG_ATH6KL_TRACING)
24416cf0b4SKalle Valo #undef TRACE_EVENT
25416cf0b4SKalle Valo #define TRACE_EVENT(name, proto, ...) \
26416cf0b4SKalle Valo static inline void trace_ ## name(proto) {}
27416cf0b4SKalle Valo #endif /* !CONFIG_ATH6KL_TRACING || __CHECKER__ */
28416cf0b4SKalle Valo 
29416cf0b4SKalle Valo #undef TRACE_SYSTEM
30416cf0b4SKalle Valo #define TRACE_SYSTEM ath6kl
31416cf0b4SKalle Valo 
32416cf0b4SKalle Valo TRACE_EVENT(ath6kl_wmi_cmd,
33416cf0b4SKalle Valo 	TP_PROTO(void *buf, size_t buf_len),
34416cf0b4SKalle Valo 
35416cf0b4SKalle Valo 	TP_ARGS(buf, buf_len),
36416cf0b4SKalle Valo 
37416cf0b4SKalle Valo 	TP_STRUCT__entry(
38416cf0b4SKalle Valo 		__field(unsigned int, id)
39416cf0b4SKalle Valo 		__field(size_t, buf_len)
40416cf0b4SKalle Valo 		__dynamic_array(u8, buf, buf_len)
41416cf0b4SKalle Valo 	),
42416cf0b4SKalle Valo 
43416cf0b4SKalle Valo 	TP_fast_assign(
44416cf0b4SKalle Valo 		__entry->id = ath6kl_get_wmi_id(buf, buf_len);
45416cf0b4SKalle Valo 		__entry->buf_len = buf_len;
46416cf0b4SKalle Valo 		memcpy(__get_dynamic_array(buf), buf, buf_len);
47416cf0b4SKalle Valo 	),
48416cf0b4SKalle Valo 
49416cf0b4SKalle Valo 	TP_printk(
50416cf0b4SKalle Valo 		"id %d len %d",
51416cf0b4SKalle Valo 		__entry->id, __entry->buf_len
52416cf0b4SKalle Valo 	)
53416cf0b4SKalle Valo );
54416cf0b4SKalle Valo 
55416cf0b4SKalle Valo TRACE_EVENT(ath6kl_wmi_event,
56416cf0b4SKalle Valo 	TP_PROTO(void *buf, size_t buf_len),
57416cf0b4SKalle Valo 
58416cf0b4SKalle Valo 	TP_ARGS(buf, buf_len),
59416cf0b4SKalle Valo 
60416cf0b4SKalle Valo 	TP_STRUCT__entry(
61416cf0b4SKalle Valo 		__field(unsigned int, id)
62416cf0b4SKalle Valo 		__field(size_t, buf_len)
63416cf0b4SKalle Valo 		__dynamic_array(u8, buf, buf_len)
64416cf0b4SKalle Valo 	),
65416cf0b4SKalle Valo 
66416cf0b4SKalle Valo 	TP_fast_assign(
67416cf0b4SKalle Valo 		__entry->id = ath6kl_get_wmi_id(buf, buf_len);
68416cf0b4SKalle Valo 		__entry->buf_len = buf_len;
69416cf0b4SKalle Valo 		memcpy(__get_dynamic_array(buf), buf, buf_len);
70416cf0b4SKalle Valo 	),
71416cf0b4SKalle Valo 
72416cf0b4SKalle Valo 	TP_printk(
73416cf0b4SKalle Valo 		"id %d len %d",
74416cf0b4SKalle Valo 		__entry->id, __entry->buf_len
75416cf0b4SKalle Valo 	)
76416cf0b4SKalle Valo );
77416cf0b4SKalle Valo 
78416cf0b4SKalle Valo #endif /* _ ATH6KL_TRACE_H || TRACE_HEADER_MULTI_READ*/
79416cf0b4SKalle Valo 
80416cf0b4SKalle Valo /* we don't want to use include/trace/events */
81416cf0b4SKalle Valo #undef TRACE_INCLUDE_PATH
82416cf0b4SKalle Valo #define TRACE_INCLUDE_PATH .
83416cf0b4SKalle Valo #undef TRACE_INCLUDE_FILE
84416cf0b4SKalle Valo #define TRACE_INCLUDE_FILE trace
85416cf0b4SKalle Valo 
86416cf0b4SKalle Valo /* This part must be outside protection */
87416cf0b4SKalle Valo #include <trace/define_trace.h>
88