summaryrefslogtreecommitdiff
path: root/mac/nfcc_coex_trace.h
diff options
context:
space:
mode:
Diffstat (limited to 'mac/nfcc_coex_trace.h')
-rw-r--r--mac/nfcc_coex_trace.h232
1 files changed, 232 insertions, 0 deletions
diff --git a/mac/nfcc_coex_trace.h b/mac/nfcc_coex_trace.h
new file mode 100644
index 0000000..4753e7a
--- /dev/null
+++ b/mac/nfcc_coex_trace.h
@@ -0,0 +1,232 @@
+/*
+ * This file is part of the UWB stack for linux.
+ *
+ * Copyright (c) 2020-2021 Qorvo US, Inc.
+ *
+ * This software is provided under the GNU General Public License, version 2
+ * (GPLv2), as well as under a Qorvo commercial license.
+ *
+ * You may choose to use this software under the terms of the GPLv2 License,
+ * version 2 ("GPLv2"), as published by the Free Software Foundation.
+ * You should have received a copy of the GPLv2 along with this program. If
+ * not, see <http://www.gnu.org/licenses/>.
+ *
+ * This program is distributed under the GPLv2 in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GPLv2 for more
+ * details.
+ *
+ * If you cannot meet the requirements of the GPLv2, you may not use this
+ * software for any purpose without first obtaining a commercial license from
+ * Qorvo. Please contact Qorvo to inquire about licensing terms.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM mcps802154_region_nfcc_coex
+
+#if !defined(NFCC_COEX_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define NFCC_COEX_TRACE_H
+
+#include <linux/tracepoint.h>
+#include <net/nfcc_coex_region_nl.h>
+#include "mcps802154_i.h"
+#include "nfcc_coex_region.h"
+#include "nfcc_coex_session.h"
+
+/* clang-format off */
+#define nfcc_coex_call_name(name) \
+ { \
+ NFCC_COEX_CALL_##name, #name \
+ }
+#define NFCC_COEX_CALL_SYMBOLS \
+ nfcc_coex_call_name(CCC_SESSION_START), \
+ nfcc_coex_call_name(CCC_SESSION_STOP), \
+ nfcc_coex_call_name(CCC_SESSION_NOTIFICATION)
+TRACE_DEFINE_ENUM(NFCC_COEX_CALL_CCC_SESSION_START);
+TRACE_DEFINE_ENUM(NFCC_COEX_CALL_CCC_SESSION_STOP);
+TRACE_DEFINE_ENUM(NFCC_COEX_CALL_CCC_SESSION_NOTIFICATION);
+
+#define nfcc_coex_state_name(name) \
+ { \
+ NFCC_COEX_STATE_##name, #name \
+ }
+#define NFCC_COEX_STATE_SYMBOLS \
+ nfcc_coex_state_name(IDLE), \
+ nfcc_coex_state_name(ACCESSING), \
+ nfcc_coex_state_name(STOPPING)
+TRACE_DEFINE_ENUM(NFCC_COEX_STATE_IDLE);
+TRACE_DEFINE_ENUM(NFCC_COEX_STATE_ACCESSING);
+TRACE_DEFINE_ENUM(NFCC_COEX_STATE_STOPPING);
+
+#define NFCC_COEX_LOCAL_ENTRY __field(enum nfcc_coex_state, state)
+#define NFCC_COEX_LOCAL_ASSIGN __entry->state = local->session.state
+#define NFCC_COEX_LOCAL_PR_FMT "state=%s"
+#define NFCC_COEX_LOCAL_PR_ARG \
+ __print_symbolic(__entry->state, NFCC_COEX_STATE_SYMBOLS)
+
+DECLARE_EVENT_CLASS(
+ local_only_evt_nfcc,
+ TP_PROTO(const struct nfcc_coex_local *local),
+ TP_ARGS(local),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT, NFCC_COEX_LOCAL_PR_ARG)
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_session_start,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ const struct nfcc_coex_session_params *p),
+ TP_ARGS(local, p),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(u64, time0_ns)
+ __field(u8, channel_number)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->time0_ns = p->time0_ns;
+ __entry->channel_number = p->channel_number;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " time0_ns=%llu channel_number=%d",
+ NFCC_COEX_LOCAL_PR_ARG, __entry->time0_ns,
+ __entry->channel_number)
+);
+
+DEFINE_EVENT(
+ local_only_evt_nfcc, region_nfcc_coex_session_stop,
+ TP_PROTO(const struct nfcc_coex_local *local),
+ TP_ARGS(local)
+);
+
+DEFINE_EVENT(
+ local_only_evt_nfcc, region_nfcc_coex_notify_stop,
+ TP_PROTO(const struct nfcc_coex_local *local),
+ TP_ARGS(local)
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_call,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ enum nfcc_coex_call call_id),
+ TP_ARGS(local, call_id),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(enum nfcc_coex_call, call_id)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->call_id = call_id;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " call_id=%s",
+ NFCC_COEX_LOCAL_PR_ARG,
+ __print_symbolic(__entry->call_id, NFCC_COEX_CALL_SYMBOLS))
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_get_demand,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ u32 next_timestamp_dtu,
+ const struct mcps802154_region_demand *rd),
+ TP_ARGS(local, next_timestamp_dtu, rd),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(u32, next_timestamp_dtu)
+ __field(u32, timestamp_dtu)
+ __field(int, duration_dtu)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->next_timestamp_dtu = next_timestamp_dtu;
+ __entry->timestamp_dtu = rd->timestamp_dtu;
+ __entry->duration_dtu = rd->max_duration_dtu;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " next_timestamp_dtu=0x%08x "
+ "rd.timestamp_dtu=0x%08x rd.duration_dtu=0x%08x",
+ NFCC_COEX_LOCAL_PR_ARG,
+ __entry->next_timestamp_dtu,
+ __entry->timestamp_dtu,
+ __entry->duration_dtu)
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_session_update_late,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ int shift_dtu, int new_duration_dtu),
+ TP_ARGS(local, shift_dtu, new_duration_dtu),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(int, shift_dtu)
+ __field(int, new_duration_dtu)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->shift_dtu = shift_dtu;
+ __entry->new_duration_dtu = new_duration_dtu;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " shift_dtu=0x%08x "
+ "new_duration_dtu=0x%08x",
+ NFCC_COEX_LOCAL_PR_ARG,
+ __entry->shift_dtu,
+ __entry->new_duration_dtu)
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_set_state,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ enum nfcc_coex_state new_state),
+ TP_ARGS(local, new_state),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(enum nfcc_coex_state, new_state)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->new_state = new_state;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " new_state=%s",
+ NFCC_COEX_LOCAL_PR_ARG,
+ __print_symbolic(__entry->new_state,
+ NFCC_COEX_STATE_SYMBOLS))
+);
+
+TRACE_EVENT(
+ region_nfcc_coex_report,
+ TP_PROTO(const struct nfcc_coex_local *local,
+ const struct dw3000_vendor_cmd_nfcc_coex_get_access_info *info),
+ TP_ARGS(local, info),
+ TP_STRUCT__entry(
+ NFCC_COEX_LOCAL_ENTRY
+ __field(bool, watchdog_timeout)
+ __field(bool, stop)
+ ),
+ TP_fast_assign(
+ NFCC_COEX_LOCAL_ASSIGN;
+ __entry->watchdog_timeout = info->watchdog_timeout;
+ __entry->stop = info->stop;
+ ),
+ TP_printk(NFCC_COEX_LOCAL_PR_FMT " watchdog_timeout=%s stop=%s",
+ NFCC_COEX_LOCAL_PR_ARG,
+ __entry->watchdog_timeout ? "true": "false",
+ __entry->stop ? "true": "false")
+);
+
+DEFINE_EVENT(
+ local_only_evt_nfcc, region_nfcc_coex_report_nla_put_failure,
+ TP_PROTO(const struct nfcc_coex_local *local),
+ TP_ARGS(local)
+);
+
+/* clang-format on */
+
+#endif /* !NFCC_COEX_TRACE_H || TRACE_HEADER_MULTI_READ */
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE nfcc_coex_trace
+#include <trace/define_trace.h>