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