162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(c) 2021        Intel Corporation
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#if !defined(CONFIG_IWLWIFI_DEVICE_TRACING)
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#define trace_iwlmei_sap_cmd(...)
962306a36Sopenharmony_ci#define trace_iwlmei_me_msg(...)
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#else
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#if !defined(__IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD) || defined(TRACE_HEADER_MULTI_READ)
1462306a36Sopenharmony_ci#define __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include <linux/tracepoint.h>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#undef TRACE_SYSTEM
1962306a36Sopenharmony_ci#define TRACE_SYSTEM iwlmei_sap_cmd
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#include "mei/sap.h"
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciTRACE_EVENT(iwlmei_sap_cmd,
2462306a36Sopenharmony_ci	TP_PROTO(const struct iwl_sap_hdr *sap_cmd, bool tx),
2562306a36Sopenharmony_ci	TP_ARGS(sap_cmd, tx),
2662306a36Sopenharmony_ci	TP_STRUCT__entry(
2762306a36Sopenharmony_ci		__dynamic_array(u8, cmd,
2862306a36Sopenharmony_ci				le16_to_cpu(sap_cmd->len) + sizeof(*sap_cmd))
2962306a36Sopenharmony_ci		__field(u8, tx)
3062306a36Sopenharmony_ci		__field(u16, type)
3162306a36Sopenharmony_ci		__field(u16, len)
3262306a36Sopenharmony_ci		__field(u32, seq)
3362306a36Sopenharmony_ci	),
3462306a36Sopenharmony_ci	TP_fast_assign(
3562306a36Sopenharmony_ci		memcpy(__get_dynamic_array(cmd), sap_cmd,
3662306a36Sopenharmony_ci		       le16_to_cpu(sap_cmd->len) + sizeof(*sap_cmd));
3762306a36Sopenharmony_ci		__entry->tx = tx;
3862306a36Sopenharmony_ci		__entry->type = le16_to_cpu(sap_cmd->type);
3962306a36Sopenharmony_ci		__entry->len = le16_to_cpu(sap_cmd->len);
4062306a36Sopenharmony_ci		__entry->seq = le32_to_cpu(sap_cmd->seq_num);
4162306a36Sopenharmony_ci	),
4262306a36Sopenharmony_ci	TP_printk("sap_cmd %s: type %d len %d seq %d", __entry->tx ? "Tx" : "Rx",
4362306a36Sopenharmony_ci		  __entry->type, __entry->len, __entry->seq)
4462306a36Sopenharmony_ci);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciTRACE_EVENT(iwlmei_me_msg,
4762306a36Sopenharmony_ci	TP_PROTO(const struct iwl_sap_me_msg_hdr *hdr, bool tx),
4862306a36Sopenharmony_ci	TP_ARGS(hdr, tx),
4962306a36Sopenharmony_ci	TP_STRUCT__entry(
5062306a36Sopenharmony_ci		__field(u8, type)
5162306a36Sopenharmony_ci		__field(u8, tx)
5262306a36Sopenharmony_ci		__field(u32, seq_num)
5362306a36Sopenharmony_ci	),
5462306a36Sopenharmony_ci	TP_fast_assign(
5562306a36Sopenharmony_ci		__entry->type = le32_to_cpu(hdr->type);
5662306a36Sopenharmony_ci		__entry->seq_num = le32_to_cpu(hdr->seq_num);
5762306a36Sopenharmony_ci		__entry->tx = tx;
5862306a36Sopenharmony_ci	),
5962306a36Sopenharmony_ci	TP_printk("ME message: %s: type %d seq %d", __entry->tx ? "Tx" : "Rx",
6062306a36Sopenharmony_ci		  __entry->type, __entry->seq_num)
6162306a36Sopenharmony_ci);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/*
6462306a36Sopenharmony_ci * If you add something here, add a stub in case
6562306a36Sopenharmony_ci * !defined(CONFIG_IWLWIFI_DEVICE_TRACING)
6662306a36Sopenharmony_ci */
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#endif /* __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD */
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
7162306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
7262306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
7362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
7462306a36Sopenharmony_ci#include <trace/define_trace.h>
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci#endif /* CONFIG_IWLWIFI_DEVICE_TRACING */
77