brintos

brintos / linux-shallow public Read only

0
0
Text · 7.8 KiB · 75246b0 Raw
347 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause-Clear */2/*3 * Copyright (c) 2019 The Linux Foundation. All rights reserved.4 * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.5 */6 7#if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)8 9#include <linux/tracepoint.h>10#include "core.h"11 12#define _TRACE_H_13 14/* create empty functions when tracing is disabled */15#if !defined(CONFIG_ATH11K_TRACING)16#undef TRACE_EVENT17#define TRACE_EVENT(name, proto, ...) \18static inline void trace_ ## name(proto) {} \19static inline bool trace_##name##_enabled(void) \20{						\21	return false;				\22}23 24#undef DECLARE_EVENT_CLASS25#define DECLARE_EVENT_CLASS(...)26#undef DEFINE_EVENT27#define DEFINE_EVENT(evt_class, name, proto, ...) \28static inline void trace_ ## name(proto) {}29#endif /* !CONFIG_ATH11K_TRACING || __CHECKER__ */30 31#undef TRACE_SYSTEM32#define TRACE_SYSTEM ath11k33 34#define ATH11K_MSG_MAX 40035 36TRACE_EVENT(ath11k_htt_pktlog,37	    TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len,38		     u32 pktlog_checksum),39 40	TP_ARGS(ar, buf, buf_len, pktlog_checksum),41 42	TP_STRUCT__entry(43		__string(device, dev_name(ar->ab->dev))44		__string(driver, dev_driver_string(ar->ab->dev))45		__field(u16, buf_len)46		__field(u32, pktlog_checksum)47		__dynamic_array(u8, pktlog, buf_len)48	),49 50	TP_fast_assign(51		__assign_str(device);52		__assign_str(driver);53		__entry->buf_len = buf_len;54		__entry->pktlog_checksum = pktlog_checksum;55		memcpy(__get_dynamic_array(pktlog), buf, buf_len);56	),57 58	TP_printk(59		"%s %s size %u pktlog_checksum %d",60		__get_str(driver),61		__get_str(device),62		__entry->buf_len,63		__entry->pktlog_checksum64	 )65);66 67TRACE_EVENT(ath11k_htt_ppdu_stats,68	    TP_PROTO(struct ath11k *ar, const void *data, size_t len),69 70	TP_ARGS(ar, data, len),71 72	TP_STRUCT__entry(73		__string(device, dev_name(ar->ab->dev))74		__string(driver, dev_driver_string(ar->ab->dev))75		__field(u16, len)76		__dynamic_array(u8, ppdu, len)77	),78 79	TP_fast_assign(80		__assign_str(device);81		__assign_str(driver);82		__entry->len = len;83		memcpy(__get_dynamic_array(ppdu), data, len);84	),85 86	TP_printk(87		"%s %s ppdu len %d",88		__get_str(driver),89		__get_str(device),90		__entry->len91	 )92);93 94TRACE_EVENT(ath11k_htt_rxdesc,95	    TP_PROTO(struct ath11k *ar, const void *data, size_t log_type, size_t len),96 97	TP_ARGS(ar, data, log_type, len),98 99	TP_STRUCT__entry(100		__string(device, dev_name(ar->ab->dev))101		__string(driver, dev_driver_string(ar->ab->dev))102		__field(u16, len)103		__field(u16, log_type)104		__dynamic_array(u8, rxdesc, len)105	),106 107	TP_fast_assign(108		__assign_str(device);109		__assign_str(driver);110		__entry->len = len;111		__entry->log_type = log_type;112		memcpy(__get_dynamic_array(rxdesc), data, len);113	),114 115	TP_printk(116		"%s %s rxdesc len %d type %d",117		__get_str(driver),118		__get_str(device),119		__entry->len,120		__entry->log_type121	 )122);123 124DECLARE_EVENT_CLASS(ath11k_log_event,125		    TP_PROTO(struct ath11k_base *ab, struct va_format *vaf),126	TP_ARGS(ab, vaf),127	TP_STRUCT__entry(128		__string(device, dev_name(ab->dev))129		__string(driver, dev_driver_string(ab->dev))130		__vstring(msg, vaf->fmt, vaf->va)131	),132	TP_fast_assign(133		__assign_str(device);134		__assign_str(driver);135		__assign_vstr(msg, vaf->fmt, vaf->va);136	),137	TP_printk(138		"%s %s %s",139		__get_str(driver),140		__get_str(device),141		__get_str(msg)142	)143);144 145DEFINE_EVENT(ath11k_log_event, ath11k_log_err,146	     TP_PROTO(struct ath11k_base *ab, struct va_format *vaf),147	     TP_ARGS(ab, vaf)148);149 150DEFINE_EVENT(ath11k_log_event, ath11k_log_warn,151	     TP_PROTO(struct ath11k_base *ab, struct va_format *vaf),152	     TP_ARGS(ab, vaf)153);154 155DEFINE_EVENT(ath11k_log_event, ath11k_log_info,156	     TP_PROTO(struct ath11k_base *ab, struct va_format *vaf),157	     TP_ARGS(ab, vaf)158);159 160TRACE_EVENT(ath11k_wmi_cmd,161	    TP_PROTO(struct ath11k_base *ab, int id, const void *buf, size_t buf_len),162 163	TP_ARGS(ab, id, buf, buf_len),164 165	TP_STRUCT__entry(166		__string(device, dev_name(ab->dev))167		__string(driver, dev_driver_string(ab->dev))168		__field(unsigned int, id)169		__field(size_t, buf_len)170		__dynamic_array(u8, buf, buf_len)171	),172 173	TP_fast_assign(174		__assign_str(device);175		__assign_str(driver);176		__entry->id = id;177		__entry->buf_len = buf_len;178		memcpy(__get_dynamic_array(buf), buf, buf_len);179	),180 181	TP_printk(182		"%s %s id %d len %zu",183		__get_str(driver),184		__get_str(device),185		__entry->id,186		__entry->buf_len187	 )188);189 190TRACE_EVENT(ath11k_wmi_event,191	    TP_PROTO(struct ath11k_base *ab, int id, const void *buf, size_t buf_len),192 193	TP_ARGS(ab, id, buf, buf_len),194 195	TP_STRUCT__entry(196		__string(device, dev_name(ab->dev))197		__string(driver, dev_driver_string(ab->dev))198		__field(unsigned int, id)199		__field(size_t, buf_len)200		__dynamic_array(u8, buf, buf_len)201	),202 203	TP_fast_assign(204		__assign_str(device);205		__assign_str(driver);206		__entry->id = id;207		__entry->buf_len = buf_len;208		memcpy(__get_dynamic_array(buf), buf, buf_len);209	),210 211	TP_printk(212		"%s %s id %d len %zu",213		__get_str(driver),214		__get_str(device),215		__entry->id,216		__entry->buf_len217	)218);219 220TRACE_EVENT(ath11k_log_dbg,221	    TP_PROTO(struct ath11k_base *ab, unsigned int level, struct va_format *vaf),222 223	TP_ARGS(ab, level, vaf),224 225	TP_STRUCT__entry(226		__string(device, dev_name(ab->dev))227		__string(driver, dev_driver_string(ab->dev))228		__field(unsigned int, level)229		__dynamic_array(char, msg, ATH11K_MSG_MAX)230	),231 232	TP_fast_assign(233		__assign_str(device);234		__assign_str(driver);235		__entry->level = level;236		WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),237				       ATH11K_MSG_MAX, vaf->fmt,238				       *vaf->va) >= ATH11K_MSG_MAX);239	),240 241	TP_printk(242		"%s %s %s",243		__get_str(driver),244		__get_str(device),245		__get_str(msg)246	)247);248 249TRACE_EVENT(ath11k_log_dbg_dump,250	    TP_PROTO(struct ath11k_base *ab, const char *msg, const char *prefix,251		     const void *buf, size_t buf_len),252 253	TP_ARGS(ab, msg, prefix, buf, buf_len),254 255	TP_STRUCT__entry(256		__string(device, dev_name(ab->dev))257		__string(driver, dev_driver_string(ab->dev))258		__string(msg, msg)259		__string(prefix, prefix)260		__field(size_t, buf_len)261		__dynamic_array(u8, buf, buf_len)262	),263 264	TP_fast_assign(265		__assign_str(device);266		__assign_str(driver);267		__assign_str(msg);268		__assign_str(prefix);269		__entry->buf_len = buf_len;270		memcpy(__get_dynamic_array(buf), buf, buf_len);271	),272 273	TP_printk(274		"%s %s %s/%s\n",275		__get_str(driver),276		__get_str(device),277		__get_str(prefix),278		__get_str(msg)279	)280);281 282TRACE_EVENT(ath11k_wmi_diag,283	    TP_PROTO(struct ath11k_base *ab, const void *data, size_t len),284 285	TP_ARGS(ab, data, len),286 287	TP_STRUCT__entry(288		__string(device, dev_name(ab->dev))289		__string(driver, dev_driver_string(ab->dev))290		__field(u16, len)291		__dynamic_array(u8, data, len)292	),293 294	TP_fast_assign(295		__assign_str(device);296		__assign_str(driver);297		__entry->len = len;298		memcpy(__get_dynamic_array(data), data, len);299	),300 301	TP_printk(302		"%s %s tlv diag len %d",303		__get_str(driver),304		__get_str(device),305		__entry->len306	)307);308 309TRACE_EVENT(ath11k_ps_timekeeper,310	    TP_PROTO(struct ath11k *ar, const void *peer_addr,311		     u32 peer_ps_timestamp, u8 peer_ps_state),312	TP_ARGS(ar, peer_addr, peer_ps_timestamp, peer_ps_state),313 314	TP_STRUCT__entry(__string(device, dev_name(ar->ab->dev))315			 __string(driver, dev_driver_string(ar->ab->dev))316			 __dynamic_array(u8, peer_addr, ETH_ALEN)317			 __field(u8, peer_ps_state)318			 __field(u32, peer_ps_timestamp)319	),320 321	TP_fast_assign(__assign_str(device);322		       __assign_str(driver);323		       memcpy(__get_dynamic_array(peer_addr), peer_addr,324			      ETH_ALEN);325		       __entry->peer_ps_state = peer_ps_state;326		       __entry->peer_ps_timestamp = peer_ps_timestamp;327	),328 329	TP_printk("%s %s %u %u",330		  __get_str(driver),331		  __get_str(device),332		  __entry->peer_ps_state,333		  __entry->peer_ps_timestamp334	)335);336 337#endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/338 339/* we don't want to use include/trace/events */340#undef TRACE_INCLUDE_PATH341#define TRACE_INCLUDE_PATH .342#undef TRACE_INCLUDE_FILE343#define TRACE_INCLUDE_FILE trace344 345/* This part must be outside protection */346#include <trace/define_trace.h>347