162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause-Clear */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
462306a36Sopenharmony_ci * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci#include "core.h"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#define _TRACE_H_
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci/* create empty functions when tracing is disabled */
1562306a36Sopenharmony_ci#if !defined(CONFIG_ATH12K_TRACING)
1662306a36Sopenharmony_ci#undef TRACE_EVENT
1762306a36Sopenharmony_ci#define TRACE_EVENT(name, proto, ...) \
1862306a36Sopenharmony_cistatic inline void trace_ ## name(proto) {}
1962306a36Sopenharmony_ci#endif /* !CONFIG_ATH12K_TRACING || __CHECKER__ */
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#undef TRACE_SYSTEM
2262306a36Sopenharmony_ci#define TRACE_SYSTEM ath12k
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciTRACE_EVENT(ath12k_htt_pktlog,
2562306a36Sopenharmony_ci	    TP_PROTO(struct ath12k *ar, const void *buf, u16 buf_len,
2662306a36Sopenharmony_ci		     u32 pktlog_checksum),
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	TP_ARGS(ar, buf, buf_len, pktlog_checksum),
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	TP_STRUCT__entry(
3162306a36Sopenharmony_ci		__string(device, dev_name(ar->ab->dev))
3262306a36Sopenharmony_ci		__string(driver, dev_driver_string(ar->ab->dev))
3362306a36Sopenharmony_ci		__field(u16, buf_len)
3462306a36Sopenharmony_ci		__field(u32, pktlog_checksum)
3562306a36Sopenharmony_ci		__dynamic_array(u8, pktlog, buf_len)
3662306a36Sopenharmony_ci	),
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	TP_fast_assign(
3962306a36Sopenharmony_ci		__assign_str(device, dev_name(ar->ab->dev));
4062306a36Sopenharmony_ci		__assign_str(driver, dev_driver_string(ar->ab->dev));
4162306a36Sopenharmony_ci		__entry->buf_len = buf_len;
4262306a36Sopenharmony_ci		__entry->pktlog_checksum = pktlog_checksum;
4362306a36Sopenharmony_ci		memcpy(__get_dynamic_array(pktlog), buf, buf_len);
4462306a36Sopenharmony_ci	),
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci	TP_printk(
4762306a36Sopenharmony_ci		"%s %s size %u pktlog_checksum %d",
4862306a36Sopenharmony_ci		__get_str(driver),
4962306a36Sopenharmony_ci		__get_str(device),
5062306a36Sopenharmony_ci		__entry->buf_len,
5162306a36Sopenharmony_ci		__entry->pktlog_checksum
5262306a36Sopenharmony_ci	 )
5362306a36Sopenharmony_ci);
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciTRACE_EVENT(ath12k_htt_ppdu_stats,
5662306a36Sopenharmony_ci	    TP_PROTO(struct ath12k *ar, const void *data, size_t len),
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci	TP_ARGS(ar, data, len),
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	TP_STRUCT__entry(
6162306a36Sopenharmony_ci		__string(device, dev_name(ar->ab->dev))
6262306a36Sopenharmony_ci		__string(driver, dev_driver_string(ar->ab->dev))
6362306a36Sopenharmony_ci		__field(u16, len)
6462306a36Sopenharmony_ci		__field(u32, info)
6562306a36Sopenharmony_ci		__field(u32, sync_tstmp_lo_us)
6662306a36Sopenharmony_ci		__field(u32, sync_tstmp_hi_us)
6762306a36Sopenharmony_ci		__field(u32, mlo_offset_lo)
6862306a36Sopenharmony_ci		__field(u32, mlo_offset_hi)
6962306a36Sopenharmony_ci		__field(u32, mlo_offset_clks)
7062306a36Sopenharmony_ci		__field(u32, mlo_comp_clks)
7162306a36Sopenharmony_ci		__field(u32, mlo_comp_timer)
7262306a36Sopenharmony_ci		__dynamic_array(u8, ppdu, len)
7362306a36Sopenharmony_ci	),
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	TP_fast_assign(
7662306a36Sopenharmony_ci		__assign_str(device, dev_name(ar->ab->dev));
7762306a36Sopenharmony_ci		__assign_str(driver, dev_driver_string(ar->ab->dev));
7862306a36Sopenharmony_ci		__entry->len = len;
7962306a36Sopenharmony_ci		__entry->info = ar->pdev->timestamp.info;
8062306a36Sopenharmony_ci		__entry->sync_tstmp_lo_us = ar->pdev->timestamp.sync_timestamp_hi_us;
8162306a36Sopenharmony_ci		__entry->sync_tstmp_hi_us = ar->pdev->timestamp.sync_timestamp_lo_us;
8262306a36Sopenharmony_ci		__entry->mlo_offset_lo = ar->pdev->timestamp.mlo_offset_lo;
8362306a36Sopenharmony_ci		__entry->mlo_offset_hi = ar->pdev->timestamp.mlo_offset_hi;
8462306a36Sopenharmony_ci		__entry->mlo_offset_clks = ar->pdev->timestamp.mlo_offset_clks;
8562306a36Sopenharmony_ci		__entry->mlo_comp_clks = ar->pdev->timestamp.mlo_comp_clks;
8662306a36Sopenharmony_ci		__entry->mlo_comp_timer = ar->pdev->timestamp.mlo_comp_timer;
8762306a36Sopenharmony_ci		memcpy(__get_dynamic_array(ppdu), data, len);
8862306a36Sopenharmony_ci	),
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	TP_printk(
9162306a36Sopenharmony_ci		"%s %s ppdu len %d",
9262306a36Sopenharmony_ci		__get_str(driver),
9362306a36Sopenharmony_ci		__get_str(device),
9462306a36Sopenharmony_ci		__entry->len
9562306a36Sopenharmony_ci	 )
9662306a36Sopenharmony_ci);
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciTRACE_EVENT(ath12k_htt_rxdesc,
9962306a36Sopenharmony_ci	    TP_PROTO(struct ath12k *ar, const void *data, size_t type, size_t len),
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	TP_ARGS(ar, data, type, len),
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci	TP_STRUCT__entry(
10462306a36Sopenharmony_ci		__string(device, dev_name(ar->ab->dev))
10562306a36Sopenharmony_ci		__string(driver, dev_driver_string(ar->ab->dev))
10662306a36Sopenharmony_ci		__field(u16, len)
10762306a36Sopenharmony_ci		__field(u16, type)
10862306a36Sopenharmony_ci		__field(u32, info)
10962306a36Sopenharmony_ci		__field(u32, sync_tstmp_lo_us)
11062306a36Sopenharmony_ci		__field(u32, sync_tstmp_hi_us)
11162306a36Sopenharmony_ci		__field(u32, mlo_offset_lo)
11262306a36Sopenharmony_ci		__field(u32, mlo_offset_hi)
11362306a36Sopenharmony_ci		__field(u32, mlo_offset_clks)
11462306a36Sopenharmony_ci		__field(u32, mlo_comp_clks)
11562306a36Sopenharmony_ci		__field(u32, mlo_comp_timer)
11662306a36Sopenharmony_ci		__dynamic_array(u8, rxdesc, len)
11762306a36Sopenharmony_ci	),
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	TP_fast_assign(
12062306a36Sopenharmony_ci		__assign_str(device, dev_name(ar->ab->dev));
12162306a36Sopenharmony_ci		__assign_str(driver, dev_driver_string(ar->ab->dev));
12262306a36Sopenharmony_ci		__entry->len = len;
12362306a36Sopenharmony_ci		__entry->type = type;
12462306a36Sopenharmony_ci		__entry->info = ar->pdev->timestamp.info;
12562306a36Sopenharmony_ci		__entry->sync_tstmp_lo_us = ar->pdev->timestamp.sync_timestamp_hi_us;
12662306a36Sopenharmony_ci		__entry->sync_tstmp_hi_us = ar->pdev->timestamp.sync_timestamp_lo_us;
12762306a36Sopenharmony_ci		__entry->mlo_offset_lo = ar->pdev->timestamp.mlo_offset_lo;
12862306a36Sopenharmony_ci		__entry->mlo_offset_hi = ar->pdev->timestamp.mlo_offset_hi;
12962306a36Sopenharmony_ci		__entry->mlo_offset_clks = ar->pdev->timestamp.mlo_offset_clks;
13062306a36Sopenharmony_ci		__entry->mlo_comp_clks = ar->pdev->timestamp.mlo_comp_clks;
13162306a36Sopenharmony_ci		__entry->mlo_comp_timer = ar->pdev->timestamp.mlo_comp_timer;
13262306a36Sopenharmony_ci		memcpy(__get_dynamic_array(rxdesc), data, len);
13362306a36Sopenharmony_ci	),
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci	TP_printk(
13662306a36Sopenharmony_ci		"%s %s rxdesc len %d",
13762306a36Sopenharmony_ci		__get_str(driver),
13862306a36Sopenharmony_ci		__get_str(device),
13962306a36Sopenharmony_ci		__entry->len
14062306a36Sopenharmony_ci	 )
14162306a36Sopenharmony_ci);
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci#endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci/* we don't want to use include/trace/events */
14662306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
14762306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
14862306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
14962306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci/* This part must be outside protection */
15262306a36Sopenharmony_ci#include <trace/define_trace.h>
153