ath6kl: add tracing support and tracing points for wmi packets
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / ath / ath6kl / trace.h
1 #if !defined(_ATH6KL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
2
3 #include <net/cfg80211.h>
4 #include <linux/skbuff.h>
5 #include <linux/tracepoint.h>
6 #include "wmi.h"
7
8 #if !defined(_ATH6KL_TRACE_H)
9 static inline unsigned int ath6kl_get_wmi_id(void *buf, size_t buf_len)
10 {
11         struct wmi_cmd_hdr *hdr = buf;
12
13         if (buf_len < sizeof(*hdr))
14                 return 0;
15
16         return le16_to_cpu(hdr->cmd_id);
17 }
18 #endif /* __ATH6KL_TRACE_H */
19
20 #define _ATH6KL_TRACE_H
21
22 /* create empty functions when tracing is disabled */
23 #if !defined(CONFIG_ATH6KL_TRACING)
24 #undef TRACE_EVENT
25 #define TRACE_EVENT(name, proto, ...) \
26 static inline void trace_ ## name(proto) {}
27 #endif /* !CONFIG_ATH6KL_TRACING || __CHECKER__ */
28
29 #undef TRACE_SYSTEM
30 #define TRACE_SYSTEM ath6kl
31
32 TRACE_EVENT(ath6kl_wmi_cmd,
33         TP_PROTO(void *buf, size_t buf_len),
34
35         TP_ARGS(buf, buf_len),
36
37         TP_STRUCT__entry(
38                 __field(unsigned int, id)
39                 __field(size_t, buf_len)
40                 __dynamic_array(u8, buf, buf_len)
41         ),
42
43         TP_fast_assign(
44                 __entry->id = ath6kl_get_wmi_id(buf, buf_len);
45                 __entry->buf_len = buf_len;
46                 memcpy(__get_dynamic_array(buf), buf, buf_len);
47         ),
48
49         TP_printk(
50                 "id %d len %d",
51                 __entry->id, __entry->buf_len
52         )
53 );
54
55 TRACE_EVENT(ath6kl_wmi_event,
56         TP_PROTO(void *buf, size_t buf_len),
57
58         TP_ARGS(buf, buf_len),
59
60         TP_STRUCT__entry(
61                 __field(unsigned int, id)
62                 __field(size_t, buf_len)
63                 __dynamic_array(u8, buf, buf_len)
64         ),
65
66         TP_fast_assign(
67                 __entry->id = ath6kl_get_wmi_id(buf, buf_len);
68                 __entry->buf_len = buf_len;
69                 memcpy(__get_dynamic_array(buf), buf, buf_len);
70         ),
71
72         TP_printk(
73                 "id %d len %d",
74                 __entry->id, __entry->buf_len
75         )
76 );
77
78 #endif /* _ ATH6KL_TRACE_H || TRACE_HEADER_MULTI_READ*/
79
80 /* we don't want to use include/trace/events */
81 #undef TRACE_INCLUDE_PATH
82 #define TRACE_INCLUDE_PATH .
83 #undef TRACE_INCLUDE_FILE
84 #define TRACE_INCLUDE_FILE trace
85
86 /* This part must be outside protection */
87 #include <trace/define_trace.h>