| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #if !defined(__TRACE_ATH5K_H) || defined(TRACE_HEADER_MULTI_READ) | 
 | #define __TRACE_ATH5K_H | 
 |  | 
 | #include <linux/tracepoint.h> | 
 |  | 
 |  | 
 | #if !defined(CONFIG_ATH5K_TRACER) || defined(__CHECKER__) | 
 | #undef TRACE_EVENT | 
 | #define TRACE_EVENT(name, proto, ...) \ | 
 | static inline void trace_ ## name(proto) {} | 
 | #endif | 
 |  | 
 | struct sk_buff; | 
 | struct ath5k_txq; | 
 | struct ath5k_tx_status; | 
 |  | 
 | #undef TRACE_SYSTEM | 
 | #define TRACE_SYSTEM ath5k | 
 |  | 
 | TRACE_EVENT(ath5k_rx, | 
 | 	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb), | 
 | 	TP_ARGS(priv, skb), | 
 | 	TP_STRUCT__entry( | 
 | 		__field(struct ath5k_hw *, priv) | 
 | 		__field(unsigned long, skbaddr) | 
 | 		__dynamic_array(u8, frame, skb->len) | 
 | 	), | 
 | 	TP_fast_assign( | 
 | 		__entry->priv = priv; | 
 | 		__entry->skbaddr = (unsigned long) skb; | 
 | 		memcpy(__get_dynamic_array(frame), skb->data, skb->len); | 
 | 	), | 
 | 	TP_printk( | 
 | 		"[%p] RX skb=%lx", __entry->priv, __entry->skbaddr | 
 | 	) | 
 | ); | 
 |  | 
 | TRACE_EVENT(ath5k_tx, | 
 | 	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, | 
 | 		 struct ath5k_txq *q), | 
 |  | 
 | 	TP_ARGS(priv, skb, q), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__field(struct ath5k_hw *, priv) | 
 | 		__field(unsigned long, skbaddr) | 
 | 		__field(u8, qnum) | 
 | 		__dynamic_array(u8, frame, skb->len) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__entry->priv = priv; | 
 | 		__entry->skbaddr = (unsigned long) skb; | 
 | 		__entry->qnum = (u8) q->qnum; | 
 | 		memcpy(__get_dynamic_array(frame), skb->data, skb->len); | 
 | 	), | 
 |  | 
 | 	TP_printk( | 
 | 		"[%p] TX skb=%lx q=%d", __entry->priv, __entry->skbaddr, | 
 | 		__entry->qnum | 
 | 	) | 
 | ); | 
 |  | 
 | TRACE_EVENT(ath5k_tx_complete, | 
 | 	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, | 
 | 		 struct ath5k_txq *q, struct ath5k_tx_status *ts), | 
 |  | 
 | 	TP_ARGS(priv, skb, q, ts), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__field(struct ath5k_hw *, priv) | 
 | 		__field(unsigned long, skbaddr) | 
 | 		__field(u8, qnum) | 
 | 		__field(u8, ts_status) | 
 | 		__field(s8, ts_rssi) | 
 | 		__field(u8, ts_antenna) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__entry->priv = priv; | 
 | 		__entry->skbaddr = (unsigned long) skb; | 
 | 		__entry->qnum = (u8) q->qnum; | 
 | 		__entry->ts_status = ts->ts_status; | 
 | 		__entry->ts_rssi =  ts->ts_rssi; | 
 | 		__entry->ts_antenna = ts->ts_antenna; | 
 | 	), | 
 |  | 
 | 	TP_printk( | 
 | 		"[%p] TX end skb=%lx q=%d stat=%x rssi=%d ant=%x", | 
 | 		__entry->priv, __entry->skbaddr, __entry->qnum, | 
 | 		__entry->ts_status, __entry->ts_rssi, __entry->ts_antenna | 
 | 	) | 
 | ); | 
 |  | 
 | #endif /* __TRACE_ATH5K_H */ | 
 |  | 
 | #if defined(CONFIG_ATH5K_TRACER) && !defined(__CHECKER__) | 
 |  | 
 | #undef TRACE_INCLUDE_PATH | 
 | #define TRACE_INCLUDE_PATH . | 
 | #undef TRACE_INCLUDE_FILE | 
 | #define TRACE_INCLUDE_FILE trace | 
 |  | 
 | #include <trace/define_trace.h> | 
 |  | 
 | #endif |