162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#if !defined(__TRACE_ATH5K_H) || defined(TRACE_HEADER_MULTI_READ)
362306a36Sopenharmony_ci#define __TRACE_ATH5K_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <linux/tracepoint.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#if !defined(CONFIG_ATH5K_TRACER) || defined(__CHECKER__)
962306a36Sopenharmony_ci#undef TRACE_EVENT
1062306a36Sopenharmony_ci#define TRACE_EVENT(name, proto, ...) \
1162306a36Sopenharmony_cistatic inline void trace_ ## name(proto) {}
1262306a36Sopenharmony_ci#endif
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct sk_buff;
1562306a36Sopenharmony_cistruct ath5k_txq;
1662306a36Sopenharmony_cistruct ath5k_tx_status;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#undef TRACE_SYSTEM
1962306a36Sopenharmony_ci#define TRACE_SYSTEM ath5k
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciTRACE_EVENT(ath5k_rx,
2262306a36Sopenharmony_ci	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb),
2362306a36Sopenharmony_ci	TP_ARGS(priv, skb),
2462306a36Sopenharmony_ci	TP_STRUCT__entry(
2562306a36Sopenharmony_ci		__field(struct ath5k_hw *, priv)
2662306a36Sopenharmony_ci		__field(unsigned long, skbaddr)
2762306a36Sopenharmony_ci		__dynamic_array(u8, frame, skb->len)
2862306a36Sopenharmony_ci	),
2962306a36Sopenharmony_ci	TP_fast_assign(
3062306a36Sopenharmony_ci		__entry->priv = priv;
3162306a36Sopenharmony_ci		__entry->skbaddr = (unsigned long) skb;
3262306a36Sopenharmony_ci		memcpy(__get_dynamic_array(frame), skb->data, skb->len);
3362306a36Sopenharmony_ci	),
3462306a36Sopenharmony_ci	TP_printk(
3562306a36Sopenharmony_ci		"[%p] RX skb=%lx", __entry->priv, __entry->skbaddr
3662306a36Sopenharmony_ci	)
3762306a36Sopenharmony_ci);
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciTRACE_EVENT(ath5k_tx,
4062306a36Sopenharmony_ci	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb,
4162306a36Sopenharmony_ci		 struct ath5k_txq *q),
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	TP_ARGS(priv, skb, q),
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	TP_STRUCT__entry(
4662306a36Sopenharmony_ci		__field(struct ath5k_hw *, priv)
4762306a36Sopenharmony_ci		__field(unsigned long, skbaddr)
4862306a36Sopenharmony_ci		__field(u8, qnum)
4962306a36Sopenharmony_ci		__dynamic_array(u8, frame, skb->len)
5062306a36Sopenharmony_ci	),
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	TP_fast_assign(
5362306a36Sopenharmony_ci		__entry->priv = priv;
5462306a36Sopenharmony_ci		__entry->skbaddr = (unsigned long) skb;
5562306a36Sopenharmony_ci		__entry->qnum = (u8) q->qnum;
5662306a36Sopenharmony_ci		memcpy(__get_dynamic_array(frame), skb->data, skb->len);
5762306a36Sopenharmony_ci	),
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	TP_printk(
6062306a36Sopenharmony_ci		"[%p] TX skb=%lx q=%d", __entry->priv, __entry->skbaddr,
6162306a36Sopenharmony_ci		__entry->qnum
6262306a36Sopenharmony_ci	)
6362306a36Sopenharmony_ci);
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciTRACE_EVENT(ath5k_tx_complete,
6662306a36Sopenharmony_ci	TP_PROTO(struct ath5k_hw *priv, struct sk_buff *skb,
6762306a36Sopenharmony_ci		 struct ath5k_txq *q, struct ath5k_tx_status *ts),
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	TP_ARGS(priv, skb, q, ts),
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci	TP_STRUCT__entry(
7262306a36Sopenharmony_ci		__field(struct ath5k_hw *, priv)
7362306a36Sopenharmony_ci		__field(unsigned long, skbaddr)
7462306a36Sopenharmony_ci		__field(u8, qnum)
7562306a36Sopenharmony_ci		__field(u8, ts_status)
7662306a36Sopenharmony_ci		__field(s8, ts_rssi)
7762306a36Sopenharmony_ci		__field(u8, ts_antenna)
7862306a36Sopenharmony_ci	),
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	TP_fast_assign(
8162306a36Sopenharmony_ci		__entry->priv = priv;
8262306a36Sopenharmony_ci		__entry->skbaddr = (unsigned long) skb;
8362306a36Sopenharmony_ci		__entry->qnum = (u8) q->qnum;
8462306a36Sopenharmony_ci		__entry->ts_status = ts->ts_status;
8562306a36Sopenharmony_ci		__entry->ts_rssi =  ts->ts_rssi;
8662306a36Sopenharmony_ci		__entry->ts_antenna = ts->ts_antenna;
8762306a36Sopenharmony_ci	),
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	TP_printk(
9062306a36Sopenharmony_ci		"[%p] TX end skb=%lx q=%d stat=%x rssi=%d ant=%x",
9162306a36Sopenharmony_ci		__entry->priv, __entry->skbaddr, __entry->qnum,
9262306a36Sopenharmony_ci		__entry->ts_status, __entry->ts_rssi, __entry->ts_antenna
9362306a36Sopenharmony_ci	)
9462306a36Sopenharmony_ci);
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci#endif /* __TRACE_ATH5K_H */
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci#if defined(CONFIG_ATH5K_TRACER) && !defined(__CHECKER__)
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
10162306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
10262306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
10362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci#include <trace/define_trace.h>
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci#endif
108