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