18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#if !defined(__TRACE_ATH5K_H) || defined(TRACE_HEADER_MULTI_READ) 38c2ecf20Sopenharmony_ci#define __TRACE_ATH5K_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <linux/tracepoint.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#if !defined(CONFIG_ATH5K_TRACER) || defined(__CHECKER__) 98c2ecf20Sopenharmony_ci#undef TRACE_EVENT 108c2ecf20Sopenharmony_ci#define TRACE_EVENT(name, proto, ...) \ 118c2ecf20Sopenharmony_cistatic inline void trace_ ## name(proto) {} 128c2ecf20Sopenharmony_ci#endif 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct sk_buff; 158c2ecf20Sopenharmony_cistruct ath5k_txq; 168c2ecf20Sopenharmony_cistruct ath5k_tx_status; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM 198c2ecf20Sopenharmony_ci#define TRACE_SYSTEM ath5k 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciTRACE_EVENT(ath5k_rx, 228c2ecf20Sopenharmony_ci TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb), 238c2ecf20Sopenharmony_ci TP_ARGS(priv, skb), 248c2ecf20Sopenharmony_ci TP_STRUCT__entry( 258c2ecf20Sopenharmony_ci __field(struct ath5k_hw *, priv) 268c2ecf20Sopenharmony_ci __field(unsigned long, skbaddr) 278c2ecf20Sopenharmony_ci __dynamic_array(u8, frame, skb->len) 288c2ecf20Sopenharmony_ci ), 298c2ecf20Sopenharmony_ci TP_fast_assign( 308c2ecf20Sopenharmony_ci __entry->priv = priv; 318c2ecf20Sopenharmony_ci __entry->skbaddr = (unsigned long) skb; 328c2ecf20Sopenharmony_ci memcpy(__get_dynamic_array(frame), skb->data, skb->len); 338c2ecf20Sopenharmony_ci ), 348c2ecf20Sopenharmony_ci TP_printk( 358c2ecf20Sopenharmony_ci "[%p] RX skb=%lx", __entry->priv, __entry->skbaddr 368c2ecf20Sopenharmony_ci ) 378c2ecf20Sopenharmony_ci); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciTRACE_EVENT(ath5k_tx, 408c2ecf20Sopenharmony_ci TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, 418c2ecf20Sopenharmony_ci struct ath5k_txq *q), 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci TP_ARGS(priv, skb, q), 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci TP_STRUCT__entry( 468c2ecf20Sopenharmony_ci __field(struct ath5k_hw *, priv) 478c2ecf20Sopenharmony_ci __field(unsigned long, skbaddr) 488c2ecf20Sopenharmony_ci __field(u8, qnum) 498c2ecf20Sopenharmony_ci __dynamic_array(u8, frame, skb->len) 508c2ecf20Sopenharmony_ci ), 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci TP_fast_assign( 538c2ecf20Sopenharmony_ci __entry->priv = priv; 548c2ecf20Sopenharmony_ci __entry->skbaddr = (unsigned long) skb; 558c2ecf20Sopenharmony_ci __entry->qnum = (u8) q->qnum; 568c2ecf20Sopenharmony_ci memcpy(__get_dynamic_array(frame), skb->data, skb->len); 578c2ecf20Sopenharmony_ci ), 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci TP_printk( 608c2ecf20Sopenharmony_ci "[%p] TX skb=%lx q=%d", __entry->priv, __entry->skbaddr, 618c2ecf20Sopenharmony_ci __entry->qnum 628c2ecf20Sopenharmony_ci ) 638c2ecf20Sopenharmony_ci); 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ciTRACE_EVENT(ath5k_tx_complete, 668c2ecf20Sopenharmony_ci TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, 678c2ecf20Sopenharmony_ci struct ath5k_txq *q, struct ath5k_tx_status *ts), 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci TP_ARGS(priv, skb, q, ts), 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci TP_STRUCT__entry( 728c2ecf20Sopenharmony_ci __field(struct ath5k_hw *, priv) 738c2ecf20Sopenharmony_ci __field(unsigned long, skbaddr) 748c2ecf20Sopenharmony_ci __field(u8, qnum) 758c2ecf20Sopenharmony_ci __field(u8, ts_status) 768c2ecf20Sopenharmony_ci __field(s8, ts_rssi) 778c2ecf20Sopenharmony_ci __field(u8, ts_antenna) 788c2ecf20Sopenharmony_ci ), 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci TP_fast_assign( 818c2ecf20Sopenharmony_ci __entry->priv = priv; 828c2ecf20Sopenharmony_ci __entry->skbaddr = (unsigned long) skb; 838c2ecf20Sopenharmony_ci __entry->qnum = (u8) q->qnum; 848c2ecf20Sopenharmony_ci __entry->ts_status = ts->ts_status; 858c2ecf20Sopenharmony_ci __entry->ts_rssi = ts->ts_rssi; 868c2ecf20Sopenharmony_ci __entry->ts_antenna = ts->ts_antenna; 878c2ecf20Sopenharmony_ci ), 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci TP_printk( 908c2ecf20Sopenharmony_ci "[%p] TX end skb=%lx q=%d stat=%x rssi=%d ant=%x", 918c2ecf20Sopenharmony_ci __entry->priv, __entry->skbaddr, __entry->qnum, 928c2ecf20Sopenharmony_ci __entry->ts_status, __entry->ts_rssi, __entry->ts_antenna 938c2ecf20Sopenharmony_ci ) 948c2ecf20Sopenharmony_ci); 958c2ecf20Sopenharmony_ci 968c2ecf20Sopenharmony_ci#endif /* __TRACE_ATH5K_H */ 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci#if defined(CONFIG_ATH5K_TRACER) && !defined(__CHECKER__) 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH 1018c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH . 1028c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE 1038c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci#include <trace/define_trace.h> 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci#endif 108