root/drivers/net/wireless/intel/iwlwifi/mei/trace.h
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright(c) 2021        Intel Corporation
 */

#if !defined(CONFIG_IWLWIFI_DEVICE_TRACING)

#define trace_iwlmei_sap_cmd(...)
#define trace_iwlmei_me_msg(...)

#else

#if !defined(__IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD) || defined(TRACE_HEADER_MULTI_READ)
#define __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD

#include <linux/tracepoint.h>

#undef TRACE_SYSTEM
#define TRACE_SYSTEM iwlmei_sap_cmd

#include "mei/sap.h"

TRACE_EVENT(iwlmei_sap_cmd,
        TP_PROTO(const struct iwl_sap_hdr *sap_cmd, bool tx),
        TP_ARGS(sap_cmd, tx),
        TP_STRUCT__entry(
                __dynamic_array(u8, cmd,
                                le16_to_cpu(sap_cmd->len) + sizeof(*sap_cmd))
                __field(u8, tx)
                __field(u16, type)
                __field(u16, len)
                __field(u32, seq)
        ),
        TP_fast_assign(
                memcpy(__get_dynamic_array(cmd), sap_cmd,
                       le16_to_cpu(sap_cmd->len) + sizeof(*sap_cmd));
                __entry->tx = tx;
                __entry->type = le16_to_cpu(sap_cmd->type);
                __entry->len = le16_to_cpu(sap_cmd->len);
                __entry->seq = le32_to_cpu(sap_cmd->seq_num);
        ),
        TP_printk("sap_cmd %s: type %d len %d seq %d", __entry->tx ? "Tx" : "Rx",
                  __entry->type, __entry->len, __entry->seq)
);

TRACE_EVENT(iwlmei_me_msg,
        TP_PROTO(const struct iwl_sap_me_msg_hdr *hdr, bool tx),
        TP_ARGS(hdr, tx),
        TP_STRUCT__entry(
                __field(u8, type)
                __field(u8, tx)
                __field(u32, seq_num)
        ),
        TP_fast_assign(
                __entry->type = le32_to_cpu(hdr->type);
                __entry->seq_num = le32_to_cpu(hdr->seq_num);
                __entry->tx = tx;
        ),
        TP_printk("ME message: %s: type %d seq %d", __entry->tx ? "Tx" : "Rx",
                  __entry->type, __entry->seq_num)
);

/*
 * If you add something here, add a stub in case
 * !defined(CONFIG_IWLWIFI_DEVICE_TRACING)
 */

#endif /* __IWLWIFI_DEVICE_TRACE_IWLWIFI_SAP_CMD */

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace
#include <trace/define_trace.h>

#endif /* CONFIG_IWLWIFI_DEVICE_TRACING */