blob: 380855440ead3b1dfb44afb7f29cc77fc8778c9c [file]
/*
* 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
#if !defined(TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define TRACE_H
#include <linux/tracepoint.h>
#include "mcps802154_i.h"
#include "idle_region.h"
/* clang-format off */
#define LOCAL_ENTRY __field(int, hw_idx)
#define LOCAL_ASSIGN __entry->hw_idx = local->hw_idx
#define LOCAL_PR_FMT "hw%d"
#define LOCAL_PR_ARG __entry->hw_idx
#define mcps802154_tx_frame_config_name(name) \
{ \
MCPS802154_TX_FRAME_CONFIG_##name, #name \
}
#define MCPS802154_TX_FRAME_CONFIG_NAMES \
mcps802154_tx_frame_config_name(TIMESTAMP_DTU), \
mcps802154_tx_frame_config_name(CCA), \
mcps802154_tx_frame_config_name(RANGING), \
mcps802154_tx_frame_config_name(KEEP_RANGING_CLOCK), \
mcps802154_tx_frame_config_name(RANGING_PDOA), \
mcps802154_tx_frame_config_name(SP1), \
mcps802154_tx_frame_config_name(SP2), \
mcps802154_tx_frame_config_name(SP3), \
mcps802154_tx_frame_config_name(STS_MODE_MASK), \
mcps802154_tx_frame_config_name(RANGING_ROUND)
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_TIMESTAMP_DTU);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_CCA);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_RANGING);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_KEEP_RANGING_CLOCK);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_RANGING_PDOA);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_SP1);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_SP2);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_SP3);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_STS_MODE_MASK);
TRACE_DEFINE_ENUM(MCPS802154_TX_FRAME_CONFIG_RANGING_ROUND);
#define mcps802154_rx_frame_config_name(name) \
{ \
MCPS802154_RX_FRAME_CONFIG_##name, #name \
}
#define MCPS802154_RX_FRAME_CONFIG_NAMES \
mcps802154_rx_frame_config_name(TIMESTAMP_DTU), \
mcps802154_rx_frame_config_name(AACK), \
mcps802154_rx_frame_config_name(RANGING), \
mcps802154_rx_frame_config_name(KEEP_RANGING_CLOCK), \
mcps802154_rx_frame_config_name(RANGING_PDOA), \
mcps802154_rx_frame_config_name(SP1), \
mcps802154_rx_frame_config_name(SP2), \
mcps802154_rx_frame_config_name(SP3), \
mcps802154_rx_frame_config_name(STS_MODE_MASK), \
mcps802154_rx_frame_config_name(RANGING_ROUND)
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_TIMESTAMP_DTU);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_AACK);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_RANGING);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_KEEP_RANGING_CLOCK);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_RANGING_PDOA);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_SP1);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_SP2);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_SP3);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_STS_MODE_MASK);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_CONFIG_RANGING_ROUND);
#define mcps802154_rx_error_name(name) \
{ \
MCPS802154_RX_ERROR_##name, #name \
}
#define MCPS802154_RX_ERROR_NAMES \
mcps802154_rx_error_name(NONE), \
mcps802154_rx_error_name(TIMEOUT), \
mcps802154_rx_error_name(BAD_CKSUM), \
mcps802154_rx_error_name(UNCORRECTABLE), \
mcps802154_rx_error_name(FILTERED), \
mcps802154_rx_error_name(SFD_TIMEOUT), \
mcps802154_rx_error_name(PHR_DECODE), \
mcps802154_rx_error_name(OTHER)
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_NONE);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_TIMEOUT);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_BAD_CKSUM);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_UNCORRECTABLE);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_FILTERED);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_SFD_TIMEOUT);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_PHR_DECODE);
TRACE_DEFINE_ENUM(MCPS802154_RX_ERROR_OTHER);
#define ieee802154_afilt_name(name) \
{ \
IEEE802154_AFILT_##name, #name \
}
#define IEEE802154_AFILT_NAMES \
ieee802154_afilt_name(SADDR_CHANGED), \
ieee802154_afilt_name(IEEEADDR_CHANGED), \
ieee802154_afilt_name(PANID_CHANGED), \
ieee802154_afilt_name(PANC_CHANGED)
TRACE_DEFINE_ENUM(IEEE802154_AFILT_SADDR_CHANGED);
TRACE_DEFINE_ENUM(IEEE802154_AFILT_IEEEADDR_CHANGED);
TRACE_DEFINE_ENUM(IEEE802154_AFILT_PANID_CHANGED);
TRACE_DEFINE_ENUM(IEEE802154_AFILT_PANC_CHANGED);
#define RX_FRAME_INFO_FLAGS_ENTRY __field(u16, flags)
#define RX_FRAME_INFO_FLAGS_ASSIGN __entry->flags = info->flags
#define RX_FRAME_INFO_FLAGS_PR_FMT "flags=%s"
#define rx_frame_info_name(name) \
{ \
MCPS802154_RX_FRAME_INFO_##name, #name \
}
#define RX_FRAME_INFO_FLAGS_NAMES \
rx_frame_info_name(TIMESTAMP_DTU), \
rx_frame_info_name(TIMESTAMP_RCTU), \
rx_frame_info_name(LQI), \
rx_frame_info_name(RSSI), \
rx_frame_info_name(RANGING_FOM), \
rx_frame_info_name(RANGING_OFFSET), \
rx_frame_info_name(RANGING_PDOA), \
rx_frame_info_name(RANGING_PDOA_FOM), \
rx_frame_info_name(RANGING_STS_TIMESTAMP_RCTU), \
rx_frame_info_name(RANGING_STS_FOM), \
rx_frame_info_name(AACK)
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_TIMESTAMP_DTU);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_TIMESTAMP_RCTU);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_LQI);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RSSI);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_FOM);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_OFFSET);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_PDOA);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_PDOA_FOM);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_STS_TIMESTAMP_RCTU);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_RANGING_STS_FOM);
TRACE_DEFINE_ENUM(MCPS802154_RX_FRAME_INFO_AACK);
#define RX_FRAME_INFO_FLAGS_PR_ARG \
__print_flags(__entry->flags, "|", RX_FRAME_INFO_FLAGS_NAMES)
#define RX_FRAME_INFO_ENTRY \
__field(u32, timestamp_dtu) \
__field(u64, timestamp_rctu) \
__field(int, frame_duration_dtu) \
__field(u8, ranging_sts_fom0) \
RX_FRAME_INFO_FLAGS_ENTRY
#define RX_FRAME_INFO_ASSIGN \
__entry->timestamp_dtu = info->timestamp_dtu; \
__entry->timestamp_rctu = info->timestamp_rctu; \
__entry->frame_duration_dtu = info->frame_duration_dtu; \
__entry->ranging_sts_fom0 = info->ranging_sts_fom[0]; \
RX_FRAME_INFO_FLAGS_ASSIGN
#define RX_FRAME_INFO_PR_FMT \
"timestamp_dtu=0x%08x timestamp_rctu=0x%llx frame_duration_dtu=%d " \
"ranging_sts_fom[0]=0x%02x " \
RX_FRAME_INFO_FLAGS_PR_FMT
#define RX_FRAME_INFO_PR_ARG \
__entry->timestamp_dtu, \
__entry->timestamp_rctu, \
__entry->frame_duration_dtu, \
__entry->ranging_sts_fom0, \
RX_FRAME_INFO_FLAGS_PR_ARG
#define KEY_ENTRY __string(key, key)
#define KEY_ASSIGN __assign_str(key, key)
#define KEY_PR_FMT "key=%s"
#define KEY_PR_ARG __get_str(key)
DECLARE_EVENT_CLASS(local_only_evt,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local),
TP_STRUCT__entry(
LOCAL_ENTRY
),
TP_fast_assign(
LOCAL_ASSIGN;
),
TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
);
DEFINE_EVENT(local_only_evt, llhw_return_void,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(llhw_return_int,
TP_PROTO(const struct mcps802154_local *local, int ret),
TP_ARGS(local, ret),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, ret)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->ret = ret;
),
TP_printk(LOCAL_PR_FMT " returned=%d", LOCAL_PR_ARG, __entry->ret)
);
TRACE_EVENT(llhw_return_rx_frame,
TP_PROTO(const struct mcps802154_local *local, int ret,
const struct mcps802154_rx_frame_info *info),
TP_ARGS(local, ret, info),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, ret)
RX_FRAME_INFO_ENTRY
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->ret = ret;
RX_FRAME_INFO_ASSIGN;
),
TP_printk(LOCAL_PR_FMT " returned=%d " RX_FRAME_INFO_PR_FMT,
LOCAL_PR_ARG, __entry->ret, RX_FRAME_INFO_PR_ARG)
);
TRACE_EVENT(llhw_return_timestamp_dtu,
TP_PROTO(const struct mcps802154_local *local, int ret,
u32 timestamp_dtu),
TP_ARGS(local, ret, timestamp_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, ret)
__field(u32, timestamp_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->ret = ret;
__entry->timestamp_dtu = timestamp_dtu;
),
TP_printk(LOCAL_PR_FMT " returned=%d timestamp_dtu=0x%08x",
LOCAL_PR_ARG, __entry->ret, __entry->timestamp_dtu)
);
TRACE_EVENT(llhw_return_timestamp_rctu,
TP_PROTO(const struct mcps802154_local *local, int ret,
u64 timestamp_rctu),
TP_ARGS(local, ret, timestamp_rctu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, ret)
__field(u64, timestamp_rctu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->ret = ret;
__entry->timestamp_rctu = timestamp_rctu;
),
TP_printk(LOCAL_PR_FMT " returned=%d timestamp_rctu=0x%llx",
LOCAL_PR_ARG, __entry->ret, __entry->timestamp_rctu)
);
DEFINE_EVENT(local_only_evt, llhw_start,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_stop,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(llhw_tx_frame,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_tx_frame_config *config,
int frame_idx, int next_delay_dtu),
TP_ARGS(local, config, frame_idx, next_delay_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, timestamp_dtu)
__field(int, rx_enable_after_tx_dtu)
__field(int, rx_enable_after_tx_timeout_dtu)
__field(int, ant_set_id)
__field(u8, flags)
__field(int, frame_idx)
__field(int, next_delay_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->timestamp_dtu = config->timestamp_dtu;
__entry->rx_enable_after_tx_dtu = config->rx_enable_after_tx_dtu;
__entry->rx_enable_after_tx_timeout_dtu = config->rx_enable_after_tx_timeout_dtu;
__entry->ant_set_id = config->ant_set_id;
__entry->flags = config->flags;
__entry->frame_idx = frame_idx;
__entry->next_delay_dtu = next_delay_dtu;
),
TP_printk(LOCAL_PR_FMT " timestamp_dtu=0x%08x"
" rx_enable_after_tx_dtu=%d rx_enable_after_tx_timeout_dtu=%d"
" ant_set_id=%d flags=%s frame_idx=%d next_delay_dtu=%d",
LOCAL_PR_ARG,
__entry->timestamp_dtu, __entry->rx_enable_after_tx_dtu,
__entry->rx_enable_after_tx_timeout_dtu, __entry->ant_set_id,
__print_flags(__entry->flags, "|", MCPS802154_TX_FRAME_CONFIG_NAMES),
__entry->frame_idx,
__entry->next_delay_dtu
)
);
TRACE_EVENT(llhw_rx_enable,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_rx_frame_config *config,
int frame_idx, int next_delay_dtu),
TP_ARGS(local, config, frame_idx, next_delay_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, timestamp_dtu)
__field(int, timeout_dtu)
__field(int, frame_timeout_dtu)
__field(u8, flags)
__field(int, ant_set_id)
__field(int, frame_idx)
__field(int, next_delay_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->timestamp_dtu = config->timestamp_dtu;
__entry->timeout_dtu = config->timeout_dtu;
__entry->frame_timeout_dtu = config->frame_timeout_dtu;
__entry->flags = config->flags;
__entry->ant_set_id = config->ant_set_id;
__entry->frame_idx = frame_idx;
__entry->next_delay_dtu = next_delay_dtu;
),
TP_printk(LOCAL_PR_FMT " timestamp_dtu=0x%08x timeout_dtu=%d"
" frame_timeout_dtu=%d ant_set_id=%d flags=%s frame_idx=%d"
" next_delay_dtu=%d",
LOCAL_PR_ARG,
__entry->timestamp_dtu, __entry->timeout_dtu,
__entry->frame_timeout_dtu, __entry->ant_set_id,
__print_flags(__entry->flags, "|", MCPS802154_RX_FRAME_CONFIG_NAMES),
__entry->frame_idx,
__entry->next_delay_dtu
)
);
DEFINE_EVENT(local_only_evt, llhw_rx_disable,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DECLARE_EVENT_CLASS(rx_frame_info_evt,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_rx_frame_info *info),
TP_ARGS(local, info),
TP_STRUCT__entry(
LOCAL_ENTRY
RX_FRAME_INFO_FLAGS_ENTRY
),
TP_fast_assign(
LOCAL_ASSIGN;
RX_FRAME_INFO_FLAGS_ASSIGN;
),
TP_printk(LOCAL_PR_FMT " " RX_FRAME_INFO_FLAGS_PR_FMT, LOCAL_PR_ARG,
RX_FRAME_INFO_FLAGS_PR_ARG)
);
DEFINE_EVENT(rx_frame_info_evt, llhw_rx_get_frame,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_rx_frame_info *info),
TP_ARGS(local, info)
);
DEFINE_EVENT(rx_frame_info_evt, llhw_rx_get_error_frame,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_rx_frame_info *info),
TP_ARGS(local, info)
);
DEFINE_EVENT(local_only_evt, llhw_idle,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(llhw_idle_timestamp,
TP_PROTO(const struct mcps802154_local *local,
u32 timestamp_dtu),
TP_ARGS(local, timestamp_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, timestamp_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->timestamp_dtu = timestamp_dtu;
),
TP_printk(LOCAL_PR_FMT " timestamp_dtu=0x%08x",
LOCAL_PR_ARG,
__entry->timestamp_dtu
)
);
DEFINE_EVENT(local_only_evt, llhw_reset,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_get_current_timestamp_dtu,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(llhw_set_channel,
TP_PROTO(const struct mcps802154_local *local, u8 page, u8 channel,
u8 preamble_code),
TP_ARGS(local, page, channel, preamble_code),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u8, page)
__field(u8, channel)
__field(u8, preamble_code)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->page = page;
__entry->channel = channel;
__entry->preamble_code = preamble_code;
),
TP_printk(LOCAL_PR_FMT " page=%d channel=%d preamble_code=%d",
LOCAL_PR_ARG, __entry->page, __entry->channel,
__entry->preamble_code)
);
TRACE_EVENT(llhw_set_hrp_uwb_params,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_hrp_uwb_params *params),
TP_ARGS(local, params),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, prf)
__field(int, psr)
__field(int, sfd_selector)
__field(int, phr_hi_rate)
__field(int, data_rate)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->prf = params->prf;
__entry->psr = params->psr;
__entry->sfd_selector = params->sfd_selector;
__entry->phr_hi_rate = params->phr_hi_rate;
__entry->data_rate = params->data_rate;
),
TP_printk(LOCAL_PR_FMT " prf=%d psr=%d sfd_selector=%d phr_hi_rate=%d data_rate=%d",
LOCAL_PR_ARG, __entry->prf, __entry->psr,
__entry->sfd_selector, __entry->phr_hi_rate, __entry->data_rate)
);
TRACE_EVENT(llhw_check_hrp_uwb_params,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_hrp_uwb_params *params),
TP_ARGS(local, params),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, prf)
__field(int, psr)
__field(int, sfd_selector)
__field(int, phr_hi_rate)
__field(int, data_rate)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->prf = params->prf;
__entry->psr = params->psr;
__entry->sfd_selector = params->sfd_selector;
__entry->phr_hi_rate = params->phr_hi_rate;
__entry->data_rate = params->data_rate;
),
TP_printk(LOCAL_PR_FMT " prf=%d psr=%d sfd_selector=%d phr_hi_rate=%d data_rate=%d",
LOCAL_PR_ARG, __entry->prf, __entry->psr,
__entry->sfd_selector, __entry->phr_hi_rate, __entry->data_rate)
);
TRACE_EVENT(llhw_set_sts_params,
TP_PROTO(const struct mcps802154_local *local, const struct
mcps802154_sts_params *params),
TP_ARGS(local, params),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, n_segs)
__field(int, seg_len)
__field(int, sp2_tx_gap_4chips)
__array(int, sp2_rx_gap_4chips, MCPS802154_STS_N_SEGS_MAX)
__array(u8, key, AES_BLOCK_SIZE)
__array(u8, v, AES_BLOCK_SIZE)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->n_segs = params->n_segs;
__entry->seg_len = params->seg_len;
__entry->sp2_tx_gap_4chips = params->sp2_tx_gap_4chips;
memcpy(__entry->sp2_rx_gap_4chips, params->sp2_rx_gap_4chips,
sizeof(params->sp2_rx_gap_4chips));
memcpy(__entry->key, params->key, sizeof(params->key));
memcpy(__entry->v, params->v, sizeof(params->v));
),
TP_printk(LOCAL_PR_FMT " n_segs=%d seg_len=%d sp2_tx_gap_4chips=%d"
" sp2_rx_gap_4chips=%d,%d,%d,%d"
" sts_key=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x"
" sts_v=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
LOCAL_PR_ARG, __entry->n_segs, __entry->seg_len,
__entry->sp2_tx_gap_4chips, __entry->sp2_rx_gap_4chips[0],
__entry->sp2_rx_gap_4chips[1], __entry->sp2_rx_gap_4chips[2],
__entry->sp2_rx_gap_4chips[3], __entry->key[0], __entry->key[1],
__entry->key[2], __entry->key[3], __entry->key[4], __entry->key[5],
__entry->key[6], __entry->key[7], __entry->key[8], __entry->key[9],
__entry->key[10], __entry->key[11], __entry->key[12], __entry->key[13],
__entry->key[14], __entry->key[15], __entry->v[0], __entry->v[1],
__entry->v[2], __entry->v[3], __entry->v[4], __entry->v[5],
__entry->v[6], __entry->v[7], __entry->v[8], __entry->v[9],
__entry->v[10], __entry->v[11], __entry->v[12], __entry->v[13],
__entry->v[14], __entry->v[15])
);
TRACE_EVENT(llhw_rx_get_measurement,
TP_PROTO(const struct mcps802154_local *local, const void *rx_ctx),
TP_ARGS(local, rx_ctx),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(const void *, rx_ctx)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->rx_ctx = rx_ctx;
),
TP_printk(LOCAL_PR_FMT " rx_ctx=%p",
LOCAL_PR_ARG,
__entry->rx_ctx)
);
TRACE_EVENT(llhw_return_measurement,
TP_PROTO(const struct mcps802154_local *local, int r,
const struct mcps802154_rx_measurement_info *info),
TP_ARGS(local, r, info),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, r)
__field(int, n_rssis)
__field(int, n_aoas)
__field(int, n_cirs)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->r = r;
__entry->n_rssis = info->n_rssis;
__entry->n_aoas = info->n_aoas;
__entry->n_cirs = info->n_cirs;
),
TP_printk(LOCAL_PR_FMT " r=%d n_rssis=%d n_aoas=%d n_cirs=%d",
LOCAL_PR_ARG,
__entry->r,
__entry->n_rssis,
__entry->n_aoas,
__entry->n_cirs)
);
TRACE_EVENT(llhw_set_hw_addr_filt,
TP_PROTO(const struct mcps802154_local *local,
const struct ieee802154_hw_addr_filt *filt,
unsigned long changed),
TP_ARGS(local, filt, changed),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(__le16, pan_id)
__field(__le16, short_addr)
__field(__le64, extended_addr)
__field(bool, pan_coord)
__field(unsigned long, changed)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->pan_id = filt->pan_id;
__entry->short_addr = filt->short_addr;
__entry->extended_addr = filt->ieee_addr;
__entry->pan_coord = filt->pan_coord;
__entry->changed = changed;
),
TP_printk(LOCAL_PR_FMT " pan_id=0x%04x short_addr=0x%04x"
" extended_addr=0x%016llx pan_coord=%s changed=%s",
LOCAL_PR_ARG, __entry->pan_id, __entry->short_addr,
__entry->extended_addr,
__entry->pan_coord ? "true" : "false",
__print_flags(__entry->changed, "|", IEEE802154_AFILT_NAMES))
);
TRACE_EVENT(llhw_set_txpower,
TP_PROTO(const struct mcps802154_local *local, s32 mbm),
TP_ARGS(local, mbm),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(s32, mbm)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->mbm = mbm;
),
TP_printk(LOCAL_PR_FMT " mbm=%d", LOCAL_PR_ARG, __entry->mbm)
);
TRACE_EVENT(llhw_set_cca_ed_level,
TP_PROTO(const struct mcps802154_local *local, s32 mbm),
TP_ARGS(local, mbm),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(s32, mbm)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->mbm = mbm;
),
TP_printk(LOCAL_PR_FMT " mbm=%d", LOCAL_PR_ARG, __entry->mbm)
);
DECLARE_EVENT_CLASS(bool_on_evt,
TP_PROTO(const struct mcps802154_local *local, bool on),
TP_ARGS(local, on),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(bool, on)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->on = on;
),
TP_printk(LOCAL_PR_FMT " %s", LOCAL_PR_ARG, __entry->on ? "on" : "off")
);
DEFINE_EVENT(bool_on_evt, llhw_set_promiscuous_mode,
TP_PROTO(const struct mcps802154_local *local, bool on),
TP_ARGS(local, on)
);
DEFINE_EVENT(bool_on_evt, llhw_set_scanning_mode,
TP_PROTO(const struct mcps802154_local *local, bool on),
TP_ARGS(local, on)
);
DEFINE_EVENT(local_only_evt, llhw_testmode_cmd,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_event_rx_frame,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_event_rx_timeout,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DECLARE_EVENT_CLASS(str_key_evt,
TP_PROTO(const struct mcps802154_local *local, const char *const key),
TP_ARGS(local, key),
TP_STRUCT__entry(
LOCAL_ENTRY
KEY_ENTRY
),
TP_fast_assign(
LOCAL_ASSIGN;
KEY_ASSIGN;
),
TP_printk(LOCAL_PR_FMT " " KEY_PR_FMT, LOCAL_PR_ARG, KEY_PR_ARG)
);
DEFINE_EVENT(str_key_evt, llhw_set_calibration,
TP_PROTO(const struct mcps802154_local *local, const char *const key),
TP_ARGS(local, key)
);
DEFINE_EVENT(str_key_evt, llhw_get_calibration,
TP_PROTO(const struct mcps802154_local *local, const char *const key),
TP_ARGS(local, key)
);
DEFINE_EVENT(local_only_evt, llhw_list_calibration,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(llhw_vendor_cmd,
TP_PROTO(const struct mcps802154_local *local, u32 vendor_id,
u32 subcmd, size_t data_len),
TP_ARGS(local, vendor_id, subcmd, data_len),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, vendor_id)
__field(u32, subcmd)
__field(u32, data_len)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->vendor_id = vendor_id;
__entry->subcmd = subcmd;
__entry->data_len = data_len;
),
TP_printk(LOCAL_PR_FMT " vendor_id=0x%06x subcmd=0x%x data_len=%d",
LOCAL_PR_ARG, __entry->vendor_id, __entry->subcmd,
__entry->data_len)
);
TRACE_EVENT(llhw_event_rx_error,
TP_PROTO(const struct mcps802154_local *local,
enum mcps802154_rx_error_type error),
TP_ARGS(local, error),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(enum mcps802154_rx_error_type, error)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->error = error;
),
TP_printk(LOCAL_PR_FMT " error=%s", LOCAL_PR_ARG,
__print_symbolic(__entry->error, MCPS802154_RX_ERROR_NAMES))
);
DEFINE_EVENT(local_only_evt, llhw_event_tx_done,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_event_broken,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_event_timer_expired,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
DEFINE_EVENT(local_only_evt, llhw_event_done,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local)
);
TRACE_EVENT(ca_set_scheduler,
TP_PROTO(const struct mcps802154_local *local, const char *name),
TP_ARGS(local, name),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(name, name)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(name, name);
),
TP_printk(LOCAL_PR_FMT " name=%s", LOCAL_PR_ARG, __get_str(name))
);
TRACE_EVENT(ca_set_scheduler_parameters,
TP_PROTO(const struct mcps802154_local *local, const char *name),
TP_ARGS(local, name),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(name, name)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(name, name);
),
TP_printk(LOCAL_PR_FMT " name=%s", LOCAL_PR_ARG, __get_str(name))
);
TRACE_EVENT(ca_set_region,
TP_PROTO(const struct mcps802154_local *local,
const char *scheduler_name, u32 region_id,
const char *region_name),
TP_ARGS(local, scheduler_name, region_id, region_name),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(scheduler_name, scheduler_name)
__field(u32, region_id)
__string(region_name, region_name)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(scheduler_name, scheduler_name);
__entry->region_id = region_id;
__assign_str(region_name, region_name);
),
TP_printk(LOCAL_PR_FMT " scheduler=%s region_id=%u region_name=%s",
LOCAL_PR_ARG, __get_str(scheduler_name), __entry->region_id,
__get_str(region_name))
);
TRACE_EVENT(ca_scheduler_call,
TP_PROTO(const struct mcps802154_local *local,
const char *scheduler_name, u32 call_id),
TP_ARGS(local, scheduler_name, call_id),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(scheduler_name, scheduler_name)
__field(u32, call_id)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(scheduler_name, scheduler_name);
__entry->call_id = call_id;
),
TP_printk(LOCAL_PR_FMT" scheduler=%s call_id=0x%x",
LOCAL_PR_ARG, __get_str(scheduler_name), __entry->call_id)
);
TRACE_EVENT(ca_set_region_params,
TP_PROTO(const struct mcps802154_local *local,
const char *scheduler_name, u32 region_id,
const char *region_name),
TP_ARGS(local, scheduler_name, region_id, region_name),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(scheduler_name, scheduler_name)
__field(u32, region_id)
__string(region_name, region_name)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(scheduler_name, scheduler_name);
__entry->region_id = region_id;
__assign_str(region_name, region_name);
),
TP_printk(LOCAL_PR_FMT " scheduler=%s region_id=%u region_name=%s",
LOCAL_PR_ARG, __get_str(scheduler_name), __entry->region_id,
__get_str(region_name))
);
TRACE_EVENT(ca_call_region,
TP_PROTO(const struct mcps802154_local *local,
const char *scheduler_name, u32 region_id,
const char *region_name, u32 call_id),
TP_ARGS(local, scheduler_name, region_id, region_name, call_id),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(scheduler_name, scheduler_name)
__field(u32, region_id)
__string(region_name, region_name)
__field(u32, call_id)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(scheduler_name, scheduler_name);
__entry->region_id = region_id;
__assign_str(region_name, region_name);
__entry->call_id = call_id;
),
TP_printk(LOCAL_PR_FMT " scheduler=%s region_id=%u region_name=%s call_id=0x%x",
LOCAL_PR_ARG, __get_str(scheduler_name), __entry->region_id,
__get_str(region_name), __entry->call_id)
);
TRACE_EVENT(ca_get_access,
TP_PROTO(const struct mcps802154_local *local, u32 next_timestamp_dtu),
TP_ARGS(local, next_timestamp_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, next_timestamp_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->next_timestamp_dtu = next_timestamp_dtu;
),
TP_printk(LOCAL_PR_FMT " next_timestamp_dtu=0x%08x", LOCAL_PR_ARG,
__entry->next_timestamp_dtu)
);
TRACE_EVENT(ca_return_int,
TP_PROTO(const struct mcps802154_local *local, int r),
TP_ARGS(local, r),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(int, r)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->r = r;
),
TP_printk(LOCAL_PR_FMT " r=%d", LOCAL_PR_ARG, __entry->r)
);
TRACE_EVENT(fproc_broken_enter,
TP_PROTO(const struct mcps802154_local *local),
TP_ARGS(local),
TP_STRUCT__entry(
LOCAL_ENTRY
),
TP_fast_assign(
LOCAL_ASSIGN;
),
TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
);
TRACE_EVENT(schedule_update,
TP_PROTO(const struct mcps802154_local *local, u32 next_timestamp_dtu),
TP_ARGS(local, next_timestamp_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, next_timestamp_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->next_timestamp_dtu = next_timestamp_dtu;
),
TP_printk(LOCAL_PR_FMT " next_timestamp_dtu=0x%08x", LOCAL_PR_ARG,
__entry->next_timestamp_dtu)
);
TRACE_EVENT(update_schedule_error,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_schedule_update *su,
u32 next_timestamp_dtu),
TP_ARGS(local, su, next_timestamp_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, expected_start_timestamp_dtu)
__field(u32, start_timestamp_dtu)
__field(int, duration_dtu)
__field(size_t, n_regions)
__field(u32, next_timestamp_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->expected_start_timestamp_dtu = su->expected_start_timestamp_dtu;
__entry->start_timestamp_dtu = su->start_timestamp_dtu;
__entry->duration_dtu = su->duration_dtu;
__entry->n_regions = su->n_regions;
__entry->next_timestamp_dtu = next_timestamp_dtu;
),
TP_printk(LOCAL_PR_FMT " expected_start_timestamp_dtu=0x%08x "
"start_timestamp_dtu=0x%08x duration_dtu=%d "
"n_regions=%lu next_timestamp_dtu=0x%08x",
LOCAL_PR_ARG,
__entry->expected_start_timestamp_dtu,
__entry->start_timestamp_dtu,
__entry->duration_dtu,
__entry->n_regions,
__entry->next_timestamp_dtu)
);
TRACE_EVENT(schedule_update_done,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_schedule *sched),
TP_ARGS(local, sched),
TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, start_timestamp_dtu)
__field(int, duration_dtu)
__field(size_t, n_regions)
),
TP_fast_assign(
LOCAL_ASSIGN;
__entry->start_timestamp_dtu = sched->start_timestamp_dtu;
__entry->duration_dtu = sched->duration_dtu;
__entry->n_regions = sched->n_regions;
),
TP_printk(LOCAL_PR_FMT " start_timestamp_dtu=0x%08x duration_dtu=%d n_regions=%lu",
LOCAL_PR_ARG, __entry->start_timestamp_dtu,
__entry->duration_dtu, __entry->n_regions)
);
TRACE_EVENT(
region_notify_stop,
TP_PROTO(const struct mcps802154_region *region),
TP_ARGS(region),
TP_STRUCT__entry(
__string(region_name, region->ops->name)
),
TP_fast_assign(
__assign_str(region_name, region->ops->name);
),
TP_printk("region=%s",
__get_str(region_name)
)
);
TRACE_EVENT(
region_get_demand,
TP_PROTO(const struct mcps802154_region *region,
u32 next_timestamp_dtu),
TP_ARGS(region, next_timestamp_dtu),
TP_STRUCT__entry(
__string(region_name, region->ops->name)
__field(u32, next_timestamp_dtu)
),
TP_fast_assign(
__assign_str(region_name, region->ops->name);
__entry->next_timestamp_dtu = next_timestamp_dtu;
),
TP_printk("region=%s next_timestamp_dtu=%#x",
__get_str(region_name),
__entry->next_timestamp_dtu
)
);
TRACE_EVENT(
region_get_demand_return,
TP_PROTO(const struct mcps802154_region *region,
const struct mcps802154_region_demand *demand,
int r),
TP_ARGS(region, demand, r),
TP_STRUCT__entry(
__field(int, r)
__field(u32, timestamp_dtu)
__field(u32, max_duration_dtu)
),
TP_fast_assign(
__entry->r = r;
__entry->timestamp_dtu = demand->timestamp_dtu;
__entry->max_duration_dtu = demand->max_duration_dtu;
),
TP_printk("r=%d timestamp_dtu=%#x max_duration_dtu=%d",
__entry->r,
__entry->timestamp_dtu,
__entry->max_duration_dtu
)
);
TRACE_EVENT(region_get_access,
TP_PROTO(const struct mcps802154_local *local,
const struct mcps802154_region *region,
u32 next_timestamp_dtu, int next_in_region_dtu,
int region_duration_dtu),
TP_ARGS(local, region, next_timestamp_dtu, next_in_region_dtu,
region_duration_dtu),
TP_STRUCT__entry(
LOCAL_ENTRY
__string(region_name, region->ops->name)
__field(u32, next_timestamp_dtu)
__field(int, next_in_region_dtu)
__field(int, region_duration_dtu)
),
TP_fast_assign(
LOCAL_ASSIGN;
__assign_str(region_name, region->ops->name);
__entry->next_timestamp_dtu = next_timestamp_dtu;
__entry->next_in_region_dtu = next_in_region_dtu;
__entry->region_duration_dtu = region_duration_dtu;
),
TP_printk(LOCAL_PR_FMT " region=%s next_timestamp_dtu=0x%08x next_in_region_dtu=%d region_duration_dtu=%d",
LOCAL_PR_ARG,
__get_str(region_name), __entry->next_timestamp_dtu,
__entry->next_in_region_dtu, __entry->region_duration_dtu)
);
TRACE_EVENT(
region_idle_params,
TP_PROTO(const struct idle_params *params),
TP_ARGS(params),
TP_STRUCT__entry(
__field(s32, min_duration_dtu)
__field(s32, max_duration_dtu)
),
TP_fast_assign(
__entry->min_duration_dtu = params->min_duration_dtu;
__entry->max_duration_dtu = params->max_duration_dtu;
),
TP_printk("min_duration_dtu=%d max_duration_dtu=%d",
__entry->min_duration_dtu,
__entry->max_duration_dtu)
);
TRACE_EVENT(
region_idle_get_access,
TP_PROTO(u32 timestamp_dtu, int duration_dtu),
TP_ARGS(timestamp_dtu, duration_dtu),
TP_STRUCT__entry(
__field(u32, timestamp_dtu)
__field(int, duration_dtu)
),
TP_fast_assign(
__entry->timestamp_dtu = timestamp_dtu;
__entry->duration_dtu = duration_dtu;
),
TP_printk("timestamp_dtu=%#x duration_dtu=%d",
__entry->timestamp_dtu,
__entry->duration_dtu)
);
#endif /* !TRACE_H || TRACE_HEADER_MULTI_READ */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace
#include <trace/define_trace.h>