1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #if !defined(__TRACE_ATH5K_H) || defined(TRACE_HEADER_MULTI_READ) 3*4882a593Smuzhiyun #define __TRACE_ATH5K_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/tracepoint.h> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #if !defined(CONFIG_ATH5K_TRACER) || defined(__CHECKER__) 9*4882a593Smuzhiyun #undef TRACE_EVENT 10*4882a593Smuzhiyun #define TRACE_EVENT(name, proto, ...) \ 11*4882a593Smuzhiyun static inline void trace_ ## name(proto) {} 12*4882a593Smuzhiyun #endif 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun struct sk_buff; 15*4882a593Smuzhiyun struct ath5k_txq; 16*4882a593Smuzhiyun struct ath5k_tx_status; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #undef TRACE_SYSTEM 19*4882a593Smuzhiyun #define TRACE_SYSTEM ath5k 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun TRACE_EVENT(ath5k_rx, 22*4882a593Smuzhiyun TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb), 23*4882a593Smuzhiyun TP_ARGS(priv, skb), 24*4882a593Smuzhiyun TP_STRUCT__entry( 25*4882a593Smuzhiyun __field(struct ath5k_hw *, priv) 26*4882a593Smuzhiyun __field(unsigned long, skbaddr) 27*4882a593Smuzhiyun __dynamic_array(u8, frame, skb->len) 28*4882a593Smuzhiyun ), 29*4882a593Smuzhiyun TP_fast_assign( 30*4882a593Smuzhiyun __entry->priv = priv; 31*4882a593Smuzhiyun __entry->skbaddr = (unsigned long) skb; 32*4882a593Smuzhiyun memcpy(__get_dynamic_array(frame), skb->data, skb->len); 33*4882a593Smuzhiyun ), 34*4882a593Smuzhiyun TP_printk( 35*4882a593Smuzhiyun "[%p] RX skb=%lx", __entry->priv, __entry->skbaddr 36*4882a593Smuzhiyun ) 37*4882a593Smuzhiyun ); 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun TRACE_EVENT(ath5k_tx, 40*4882a593Smuzhiyun TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, 41*4882a593Smuzhiyun struct ath5k_txq *q), 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun TP_ARGS(priv, skb, q), 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun TP_STRUCT__entry( 46*4882a593Smuzhiyun __field(struct ath5k_hw *, priv) 47*4882a593Smuzhiyun __field(unsigned long, skbaddr) 48*4882a593Smuzhiyun __field(u8, qnum) 49*4882a593Smuzhiyun __dynamic_array(u8, frame, skb->len) 50*4882a593Smuzhiyun ), 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun TP_fast_assign( 53*4882a593Smuzhiyun __entry->priv = priv; 54*4882a593Smuzhiyun __entry->skbaddr = (unsigned long) skb; 55*4882a593Smuzhiyun __entry->qnum = (u8) q->qnum; 56*4882a593Smuzhiyun memcpy(__get_dynamic_array(frame), skb->data, skb->len); 57*4882a593Smuzhiyun ), 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun TP_printk( 60*4882a593Smuzhiyun "[%p] TX skb=%lx q=%d", __entry->priv, __entry->skbaddr, 61*4882a593Smuzhiyun __entry->qnum 62*4882a593Smuzhiyun ) 63*4882a593Smuzhiyun ); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun TRACE_EVENT(ath5k_tx_complete, 66*4882a593Smuzhiyun TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb, 67*4882a593Smuzhiyun struct ath5k_txq *q, struct ath5k_tx_status *ts), 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun TP_ARGS(priv, skb, q, ts), 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun TP_STRUCT__entry( 72*4882a593Smuzhiyun __field(struct ath5k_hw *, priv) 73*4882a593Smuzhiyun __field(unsigned long, skbaddr) 74*4882a593Smuzhiyun __field(u8, qnum) 75*4882a593Smuzhiyun __field(u8, ts_status) 76*4882a593Smuzhiyun __field(s8, ts_rssi) 77*4882a593Smuzhiyun __field(u8, ts_antenna) 78*4882a593Smuzhiyun ), 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun TP_fast_assign( 81*4882a593Smuzhiyun __entry->priv = priv; 82*4882a593Smuzhiyun __entry->skbaddr = (unsigned long) skb; 83*4882a593Smuzhiyun __entry->qnum = (u8) q->qnum; 84*4882a593Smuzhiyun __entry->ts_status = ts->ts_status; 85*4882a593Smuzhiyun __entry->ts_rssi = ts->ts_rssi; 86*4882a593Smuzhiyun __entry->ts_antenna = ts->ts_antenna; 87*4882a593Smuzhiyun ), 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun TP_printk( 90*4882a593Smuzhiyun "[%p] TX end skb=%lx q=%d stat=%x rssi=%d ant=%x", 91*4882a593Smuzhiyun __entry->priv, __entry->skbaddr, __entry->qnum, 92*4882a593Smuzhiyun __entry->ts_status, __entry->ts_rssi, __entry->ts_antenna 93*4882a593Smuzhiyun ) 94*4882a593Smuzhiyun ); 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #endif /* __TRACE_ATH5K_H */ 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #if defined(CONFIG_ATH5K_TRACER) && !defined(__CHECKER__) 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 101*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 102*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 103*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #include <trace/define_trace.h> 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun #endif 108