blob: 8928fe3c968d85d64b0f0531b1b6346538be666d [file]
/*
* This file is part of the UWB stack for linux.
*
* Copyright (c) 2020-2022 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_fira
#if !defined(FIRA_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define FIRA_TRACE_H
#include <linux/tracepoint.h>
#include "fira_session.h"
#include "net/fira_region_params.h"
#include <net/fira_region_nl.h>
/* clang-format off */
#define FIRA_SESSION_ENTRY __field(u32, session_id)
#define FIRA_SESSION_ASSIGN __entry->session_id = session->id
#define FIRA_SESSION_PR_FMT "session_id=%d"
#define FIRA_SESSION_PR_ARG __entry->session_id
#define FIRA_DEVICE_TYPE_SYMBOLS \
{ FIRA_DEVICE_TYPE_CONTROLEE, "controlee" }, \
{ FIRA_DEVICE_TYPE_CONTROLLER, "controller" }
TRACE_DEFINE_ENUM(FIRA_DEVICE_TYPE_CONTROLEE);
TRACE_DEFINE_ENUM(FIRA_DEVICE_TYPE_CONTROLLER);
#define FIRA_DEVICE_ROLE_SYMBOLS \
{ FIRA_DEVICE_ROLE_RESPONDER, "responder" }, \
{ FIRA_DEVICE_ROLE_INITIATOR, "initiator" }
TRACE_DEFINE_ENUM(FIRA_DEVICE_ROLE_RESPONDER);
TRACE_DEFINE_ENUM(FIRA_DEVICE_ROLE_INITIATOR);
#define FIRA_RANGING_ROUND_SYMBOLS \
{ FIRA_RANGING_ROUND_USAGE_OWR, "OWR" }, \
{ FIRA_RANGING_ROUND_USAGE_SSTWR, "SSTWR" }, \
{ FIRA_RANGING_ROUND_USAGE_DSTWR, "DSTWR" }
TRACE_DEFINE_ENUM(FIRA_RANGING_ROUND_USAGE_OWR);
TRACE_DEFINE_ENUM(FIRA_RANGING_ROUND_USAGE_SSTWR);
TRACE_DEFINE_ENUM(FIRA_RANGING_ROUND_USAGE_DSTWR);
#define FIRA_MULTI_NODE_MODE_SYMBOLS \
{ FIRA_MULTI_NODE_MODE_UNICAST, "UNICAST" }, \
{ FIRA_MULTI_NODE_MODE_ONE_TO_MANY, "ONE_TO_MANY" }, \
{ FIRA_MULTI_NODE_MODE_MANY_TO_MANY, "MANY_TO_MANY" }
TRACE_DEFINE_ENUM(FIRA_MULTI_NODE_MODE_UNICAST);
TRACE_DEFINE_ENUM(FIRA_MULTI_NODE_MODE_ONE_TO_MANY);
TRACE_DEFINE_ENUM(FIRA_MULTI_NODE_MODE_MANY_TO_MANY);
#define FIRA_RFRAME_CONFIG_SYMBOLS \
{ FIRA_RFRAME_CONFIG_SP0, "SP0" }, \
{ FIRA_RFRAME_CONFIG_SP1, "SP1" }, \
{ FIRA_RFRAME_CONFIG_SP2, "SP2" }, \
{ FIRA_RFRAME_CONFIG_SP3, "SP3" }
TRACE_DEFINE_ENUM(FIRA_RFRAME_CONFIG_SP0);
TRACE_DEFINE_ENUM(FIRA_RFRAME_CONFIG_SP1);
TRACE_DEFINE_ENUM(FIRA_RFRAME_CONFIG_SP2);
TRACE_DEFINE_ENUM(FIRA_RFRAME_CONFIG_SP3);
#define FIRA_PREAMBULE_DURATION_SYMBOLS \
{ FIRA_PREAMBULE_DURATION_32, "32" }, \
{ FIRA_PREAMBULE_DURATION_64, "64" }
TRACE_DEFINE_ENUM(FIRA_PREAMBULE_DURATION_32);
TRACE_DEFINE_ENUM(FIRA_PREAMBULE_DURATION_64);
#define FIRA_STS_SEGMENTS_SYMBOLS \
{ FIRA_STS_SEGMENTS_0, "0" }, \
{ FIRA_STS_SEGMENTS_1, "1" }, \
{ FIRA_STS_SEGMENTS_2, "2" }, \
{ FIRA_STS_SEGMENTS_3, "3" }, \
{ FIRA_STS_SEGMENTS_4, "4" }
TRACE_DEFINE_ENUM(FIRA_STS_SEGMENTS_0);
TRACE_DEFINE_ENUM(FIRA_STS_SEGMENTS_1);
TRACE_DEFINE_ENUM(FIRA_STS_SEGMENTS_2);
TRACE_DEFINE_ENUM(FIRA_STS_SEGMENTS_3);
TRACE_DEFINE_ENUM(FIRA_STS_SEGMENTS_4);
#define FIRA_PSDU_DATA_RATE_SYMBOLS \
{ FIRA_PSDU_DATA_RATE_6M81, "6M81" }, \
{ FIRA_PSDU_DATA_RATE_7M80, "7M80" }, \
{ FIRA_PSDU_DATA_RATE_27M2, "27M2" }, \
{ FIRA_PSDU_DATA_RATE_31M2, "31M2" }
TRACE_DEFINE_ENUM(FIRA_PSDU_DATA_RATE_6M81);
TRACE_DEFINE_ENUM(FIRA_PSDU_DATA_RATE_7M80);
TRACE_DEFINE_ENUM(FIRA_PSDU_DATA_RATE_27M2);
TRACE_DEFINE_ENUM(FIRA_PSDU_DATA_RATE_31M2);
#define FIRA_PHR_DATA_RATE_SYMBOLS \
{ FIRA_PHR_DATA_RATE_850K, "850k" }, \
{ FIRA_PHR_DATA_RATE_6M81, "6M81" }
TRACE_DEFINE_ENUM(FIRA_PHR_DATA_RATE_850K);
TRACE_DEFINE_ENUM(FIRA_PHR_DATA_RATE_6M81);
#define FIRA_MAC_FCS_TYPE_CRC_SYMBOLS \
{ FIRA_MAC_FCS_TYPE_CRC_16, "16" }, \
{ FIRA_MAC_FCS_TYPE_CRC_32, "32" }
TRACE_DEFINE_ENUM(FIRA_MAC_FCS_TYPE_CRC_16);
TRACE_DEFINE_ENUM(FIRA_MAC_FCS_TYPE_CRC_32);
#define FIRA_STS_MODE_SYMBOLS \
{ FIRA_STS_MODE_STATIC, "static" }, \
{ FIRA_STS_MODE_DYNAMIC, "dynamic" }, \
{ FIRA_STS_MODE_DYNAMIC_INDIVIDUAL_KEY, "dynamic_individual_key" }, \
{ FIRA_STS_MODE_PROVISIONED, "provisioned" }, \
{ FIRA_STS_MODE_PROVISIONED_INDIVIDUAL_KEY, "provisioned_individual_key" }
TRACE_DEFINE_ENUM(FIRA_STS_MODE_STATIC);
TRACE_DEFINE_ENUM(FIRA_STS_MODE_DYNAMIC);
TRACE_DEFINE_ENUM(FIRA_STS_MODE_DYNAMIC_INDIVIDUAL_KEY);
TRACE_DEFINE_ENUM(FIRA_STS_MODE_PROVISIONED);
TRACE_DEFINE_ENUM(FIRA_STS_MODE_PROVISIONED_INDIVIDUAL_KEY);
#define FIRA_MESSAGE_TYPE \
{ FIRA_MESSAGE_ID_RANGING_INITIATION, "RIM" }, \
{ FIRA_MESSAGE_ID_RANGING_RESPONSE, "RRM" }, \
{ FIRA_MESSAGE_ID_RANGING_FINAL, "RFM" }, \
{ FIRA_MESSAGE_ID_CONTROL, "RCM" }, \
{ FIRA_MESSAGE_ID_MEASUREMENT_REPORT, "MRM" }, \
{ FIRA_MESSAGE_ID_RESULT_REPORT, "RRRM" }, \
{ FIRA_MESSAGE_ID_CONTROL_UPDATE, "CMU" }
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_RANGING_INITIATION);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_RANGING_RESPONSE);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_RANGING_FINAL);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_CONTROL);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_MEASUREMENT_REPORT);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_RESULT_REPORT);
TRACE_DEFINE_ENUM(FIRA_MESSAGE_ID_CONTROL_UPDATE);
#define mcps802154_rx_error_name(name) \
{ \
MCPS802154_RX_ERROR_##name, #name \
}
#define MCPS802154_RX_ERROR_SYMBOLS \
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 mcps802154_tx_reason_name(name) \
{ \
MCPS802154_ACCESS_TX_RETURN_REASON_##name, #name \
}
#define MCPS802154_TX_REASON_SYMBOLS \
mcps802154_tx_reason_name(CONSUMED), \
mcps802154_tx_reason_name(FAILURE), \
mcps802154_tx_reason_name(CANCEL)
TRACE_DEFINE_ENUM(MCPS802154_ACCESS_TX_RETURN_REASON_CONSUMED);
TRACE_DEFINE_ENUM(MCPS802154_ACCESS_TX_RETURN_REASON_FAILURE);
TRACE_DEFINE_ENUM(MCPS802154_ACCESS_TX_RETURN_REASON_CANCEL);
#define FIRA_MEAS_SEQ_STEP_TYPE \
{ FIRA_MEASUREMENT_TYPE_RANGE, "range" }, \
{ FIRA_MEASUREMENT_TYPE_AOA, "AoA" }, \
{ FIRA_MEASUREMENT_TYPE_AOA_AZIMUTH, "AoA Azimuth" }, \
{ FIRA_MEASUREMENT_TYPE_AOA_ELEVATION, "AoA Elevation" }, \
{ FIRA_MEASUREMENT_TYPE_AOA_AZIMUTH_ELEVATION, \
"AoA Azimuth/Elevation" }
TRACE_DEFINE_ENUM(FIRA_MEASUREMENT_TYPE_RANGE);
TRACE_DEFINE_ENUM(FIRA_MEASUREMENT_TYPE_AOA);
TRACE_DEFINE_ENUM(FIRA_MEASUREMENT_TYPE_AOA_AZIMUTH);
TRACE_DEFINE_ENUM(FIRA_MEASUREMENT_TYPE_AOA_ELEVATION);
TRACE_DEFINE_ENUM(FIRA_MEASUREMENT_TYPE_AOA_AZIMUTH_ELEVATION);
#define fira_session_state_id_name(name) \
{ \
FIRA_SESSION_STATE_ID_##name, #name \
}
#define FIRA_SESSION_STATE_ID_SYMBOLS \
fira_session_state_id_name(DEINIT), \
fira_session_state_id_name(INIT), \
fira_session_state_id_name(ACTIVE), \
fira_session_state_id_name(IDLE)
TRACE_DEFINE_ENUM(FIRA_SESSION_STATE_ID_DEINIT);
TRACE_DEFINE_ENUM(FIRA_SESSION_STATE_ID_INIT);
TRACE_DEFINE_ENUM(FIRA_SESSION_STATE_ID_ACTIVE);
TRACE_DEFINE_ENUM(FIRA_SESSION_STATE_ID_IDLE);
#define fira_call_name(name) \
{ \
FIRA_CALL_##name, #name \
}
#define FIRA_CALL_SYMBOLS \
fira_call_name(GET_CAPABILITIES), \
fira_call_name(SESSION_INIT), \
fira_call_name(SESSION_START), \
fira_call_name(SESSION_STOP), \
fira_call_name(SESSION_DEINIT), \
fira_call_name(SESSION_SET_PARAMS), \
fira_call_name(NEW_CONTROLEE), \
fira_call_name(DEL_CONTROLEE), \
fira_call_name(SESSION_NOTIFICATION), \
fira_call_name(SESSION_GET_PARAMS), \
fira_call_name(SESSION_GET_STATE), \
fira_call_name(SESSION_GET_COUNT), \
fira_call_name(SET_CONTROLEE), \
fira_call_name(GET_CONTROLEES)
TRACE_DEFINE_ENUM(FIRA_CALL_GET_CAPABILITIES);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_INIT);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_START);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_STOP);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_DEINIT);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_SET_PARAMS);
TRACE_DEFINE_ENUM(FIRA_CALL_NEW_CONTROLEE);
TRACE_DEFINE_ENUM(FIRA_CALL_DEL_CONTROLEE);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_NOTIFICATION);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_GET_PARAMS);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_GET_STATE);
TRACE_DEFINE_ENUM(FIRA_CALL_SESSION_GET_COUNT);
TRACE_DEFINE_ENUM(FIRA_CALL_SET_CONTROLEE);
TRACE_DEFINE_ENUM(FIRA_CALL_GET_CONTROLEES);
TRACE_EVENT(region_fira_session_params,
TP_PROTO(const struct fira_session *session,
const struct fira_session_params *params),
TP_ARGS(session, params),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum fira_device_type, device_type)
__field(enum fira_ranging_round_usage, ranging_round_usage)
__field(enum fira_multi_node_mode, multi_node_mode)
__field(__le16, controller_short_addr)
__field(int, initiation_time_ms)
__field(int, slot_duration_dtu)
__field(int, block_duration_dtu)
__field(u32, block_stride_len)
__field(u32, max_number_of_measurements)
__field(u32, max_rr_retry)
__field(int, round_duration_slots)
__field(bool, round_hopping)
__field(u8, priority)
__field(int, channel_number)
__field(int, preamble_code_index)
__field(enum fira_rframe_config, rframe_config)
__field(enum fira_preambule_duration, preamble_duration)
__field(enum fira_sfd_id, sfd_id)
__field(enum fira_sts_segments, number_of_sts_segments)
__field(enum fira_psdu_data_rate, psdu_data_rate)
__field(enum fira_mac_fcs_type, mac_fcs_type)
__field(enum fira_sts_mode, sts_config)
__array(u8, vupper64, FIRA_VUPPER64_SIZE)
__field(u32, sub_session_id)
__field(u32, session_key_len)
__field(bool, key_rotation)
__field(int, key_rotation_rate)
__field(bool, aoa_result_req)
__field(bool, report_tof)
__field(bool, report_aoa_azimuth)
__field(bool, report_aoa_elevation)
__field(bool, report_aoa_fom)
__field(bool, report_diagnostics)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->device_type = params->device_type;
__entry->ranging_round_usage = params->ranging_round_usage;
__entry->multi_node_mode = params->multi_node_mode;
__entry->controller_short_addr = params->controller_short_addr;
__entry->initiation_time_ms = params->initiation_time_ms;
__entry->slot_duration_dtu = params->slot_duration_dtu;
__entry->block_duration_dtu = params->block_duration_dtu;
__entry->block_stride_len = params->block_stride_len;
__entry->max_number_of_measurements = params->max_number_of_measurements;
__entry->max_rr_retry = params->max_rr_retry;
__entry->round_duration_slots = params->round_duration_slots;
__entry->round_hopping = params->round_hopping;
__entry->priority = params->priority;
__entry->channel_number = params->channel_number;
__entry->preamble_code_index = params->preamble_code_index;
__entry->rframe_config = params->rframe_config;
__entry->preamble_duration = params->preamble_duration;
__entry->sfd_id = params->sfd_id;
__entry->number_of_sts_segments = params->number_of_sts_segments;
__entry->psdu_data_rate = params->psdu_data_rate;
__entry->mac_fcs_type = params->mac_fcs_type;
__entry->sts_config = params->sts_config;
memcpy(__entry->vupper64, params->vupper64, sizeof(params->vupper64));
__entry->sub_session_id = params->sub_session_id;
__entry->session_key_len = params->session_key_len;
__entry->key_rotation = params->key_rotation;
__entry->key_rotation_rate = params->key_rotation_rate;
__entry->aoa_result_req = params->aoa_result_req;
__entry->report_tof = params->report_tof;
__entry->report_aoa_azimuth = params->report_aoa_azimuth;
__entry->report_aoa_elevation = params->report_aoa_elevation;
__entry->report_aoa_fom = params->report_aoa_fom;
__entry->report_diagnostics = params->report_diagnostics;
),
TP_printk(FIRA_SESSION_PR_FMT " device_type=%s ranging_round_usage=%s multi_node_mode=%s "
"controller_short_addr=0x%x initiation_time_ms=%d slot_duration_dtu=%d "
"block_duration_dtu=%d block_stride_len=%d max_nb_of_measurements=%d "
"max_rr_retry=%d round_duration_slots=%d round_hopping=%d "
"priority=%d channel_number=%d preamble_code_index=%d rframe_config=%s "
"preamble_duration=%s sfd_id=%d number_of_sts_segments=%s psdu_data_rate=%s mac_fcs_type=%s "
"sts_config=%s vupper64=%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x sub_session_id=%d session_key_len=%d "
"key_rotation=%d key_rotation_rate=%d aoa_result_req=%d report_tof=%d report_aoa_azimuth=%d "
"report_aoa_elevation=%d report_aoa_fom=%d diagnostics=%d",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->device_type, FIRA_DEVICE_TYPE_SYMBOLS),
__print_symbolic(__entry->ranging_round_usage, FIRA_RANGING_ROUND_SYMBOLS),
__print_symbolic(__entry->multi_node_mode, FIRA_MULTI_NODE_MODE_SYMBOLS),
__entry->controller_short_addr,
__entry->initiation_time_ms,
__entry->slot_duration_dtu,
__entry->block_duration_dtu,
__entry->block_stride_len,
__entry->max_number_of_measurements,
__entry->max_rr_retry,
__entry->round_duration_slots,
__entry->round_hopping,
__entry->priority,
__entry->channel_number,
__entry->preamble_code_index,
__print_symbolic(__entry->rframe_config, FIRA_RFRAME_CONFIG_SYMBOLS),
__print_symbolic(__entry->preamble_duration, FIRA_PREAMBULE_DURATION_SYMBOLS),
__entry->sfd_id,
__print_symbolic(__entry->number_of_sts_segments, FIRA_STS_SEGMENTS_SYMBOLS),
__print_symbolic(__entry->psdu_data_rate, FIRA_PSDU_DATA_RATE_SYMBOLS),
__print_symbolic(__entry->mac_fcs_type, FIRA_MAC_FCS_TYPE_CRC_SYMBOLS),
__print_symbolic(__entry->sts_config, FIRA_STS_MODE_SYMBOLS),
__entry->vupper64[0], __entry->vupper64[1], __entry->vupper64[2], __entry->vupper64[3],
__entry->vupper64[4], __entry->vupper64[5], __entry->vupper64[6], __entry->vupper64[7],
__entry->sub_session_id,
__entry->session_key_len,
__entry->key_rotation,
__entry->key_rotation_rate,
__entry->aoa_result_req,
__entry->report_tof,
__entry->report_aoa_azimuth,
__entry->report_aoa_elevation,
__entry->report_aoa_fom,
__entry->report_diagnostics
)
);
TRACE_EVENT(region_fira_session_meas_seq_params,
TP_PROTO(const struct fira_session *session,
const struct fira_measurement_sequence_step *step,
int index),
TP_ARGS(session, step, index),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, index)
__field(enum fira_measurement_type, type)
__field(u8, n_measurements)
__field(s8, rx_ant_set_nonranging)
__field(s8, rx_ant_sets_ranging_0)
__field(s8, rx_ant_sets_ranging_1)
__field(s8, tx_ant_set_nonranging)
__field(s8, tx_ant_set_ranging)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->index = index;
__entry->type = step->type;
__entry->n_measurements = step->n_measurements;
__entry->rx_ant_set_nonranging = step->rx_ant_set_nonranging;
__entry->rx_ant_sets_ranging_0 = step->rx_ant_sets_ranging[0];
__entry->rx_ant_sets_ranging_1 = step->rx_ant_sets_ranging[1];
__entry->tx_ant_set_nonranging = step->tx_ant_set_nonranging;
__entry->tx_ant_set_ranging = step->tx_ant_set_ranging;
),
TP_printk(FIRA_SESSION_PR_FMT " index=%d type=%s n_measurements=%d "
"rx_ant_set_nonranging=%d rx_ant_sets_ranging_0=%d "
"rx_ant_sets_ranging_1=%d tx_ant_set_nonranging=%d "
"tx_ant_set_ranging=%d",
FIRA_SESSION_PR_ARG,
__entry->index,
__print_symbolic(__entry->type, FIRA_MEAS_SEQ_STEP_TYPE),
__entry->n_measurements,
__entry->rx_ant_set_nonranging,
__entry->rx_ant_sets_ranging_0,
__entry->rx_ant_sets_ranging_1,
__entry->tx_ant_set_nonranging,
__entry->tx_ant_set_ranging)
);
TRACE_EVENT(region_fira_session_control,
TP_PROTO(const struct fira_local *local,
int session_id, enum fira_call call_id),
TP_ARGS(local, session_id, call_id),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum fira_call, call_id)
),
TP_fast_assign(
__entry->session_id = session_id;
__entry->call_id = call_id;
),
TP_printk(FIRA_SESSION_PR_FMT " call_id=%s",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->call_id, FIRA_CALL_SYMBOLS)
)
);
TRACE_EVENT(
region_fira_session_fsm_active_get_demand_return,
TP_PROTO(const struct fira_local *local,
const struct fira_session *session,
const struct fira_session_demand *fsd),
TP_ARGS(local, session, fsd),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(u32, block_start_dtu)
__field(u32, timestamp_dtu)
__field(int, max_duration_dtu)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->block_start_dtu = fsd->block_start_dtu;
__entry->timestamp_dtu = fsd->timestamp_dtu;
__entry->max_duration_dtu = fsd->max_duration_dtu;
),
TP_printk(FIRA_SESSION_PR_FMT " block_start_dtu=%#x "
"timestamp_dtu=%#x max_duration_dtu=%d",
FIRA_SESSION_PR_ARG,
__entry->block_start_dtu,
__entry->timestamp_dtu,
__entry->max_duration_dtu
)
);
TRACE_EVENT(
region_fira_get_access_controller,
TP_PROTO(const struct fira_local *local,
const struct fira_session *session,
const struct fira_session_demand *fsd),
TP_ARGS(local, session, fsd),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, block_index)
__field(int, add_blocks)
__field(int, round_index)
__field(int, block_stride_len)
__field(u32, block_start_dtu)
__field(u32, timestamp_dtu)
__field(int, max_duration_dtu)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->block_index = session->block_index;
__entry->add_blocks = fsd->add_blocks;
__entry->round_index = fsd->round_index;
__entry->block_stride_len = session->block_stride_len;
__entry->block_start_dtu = fsd->block_start_dtu;
__entry->timestamp_dtu = fsd->timestamp_dtu;
__entry->max_duration_dtu = fsd->max_duration_dtu;
),
TP_printk(FIRA_SESSION_PR_FMT " block_index=%d add_blocks=%d "
"round_index=%d block_stride_len=%d block_start_dtu=%#x "
"timestamp_dtu=%#x max_duration_dtu=%d",
FIRA_SESSION_PR_ARG,
__entry->block_index,
__entry->add_blocks,
__entry->round_index,
__entry->block_stride_len,
__entry->block_start_dtu,
__entry->timestamp_dtu,
__entry->max_duration_dtu
)
);
TRACE_EVENT(
region_fira_get_access_controlee,
TP_PROTO(const struct fira_local *local,
const struct fira_session *session,
const struct fira_session_demand *fsd),
TP_ARGS(local, session, fsd),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, block_index)
__field(int, add_blocks)
__field(int, round_index)
__field(u32, block_start_dtu)
__field(u32, timestamp_dtu)
__field(int, max_duration_dtu)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->block_index = session->block_index;
__entry->add_blocks = fsd->add_blocks;
__entry->round_index = fsd->round_index;
__entry->block_start_dtu = fsd->block_start_dtu;
__entry->timestamp_dtu = fsd->timestamp_dtu;
__entry->max_duration_dtu = fsd->max_duration_dtu;
),
TP_printk(FIRA_SESSION_PR_FMT " block_index=%d add_blocks=%d "
"round_index=%d block_start_dtu=%#x timestamp_dtu=%#x "
"max_duration_dtu=%d",
FIRA_SESSION_PR_ARG,
__entry->block_index,
__entry->add_blocks,
__entry->round_index,
__entry->block_start_dtu,
__entry->timestamp_dtu,
__entry->max_duration_dtu
)
);
TRACE_EVENT(region_fira_rx_frame,
TP_PROTO(const struct fira_session *session,
enum fira_message_id message_id,
enum mcps802154_rx_error_type error),
TP_ARGS(session, message_id, error),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum fira_message_id, message_id)
__field(enum mcps802154_rx_error_type, error)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->message_id = message_id;
__entry->error = error;
),
TP_printk(FIRA_SESSION_PR_FMT " message_id=%s error=%s",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->message_id, FIRA_MESSAGE_TYPE),
__print_symbolic(__entry->error, MCPS802154_RX_ERROR_SYMBOLS)
)
);
TRACE_EVENT(region_fira_rx_frame_control,
TP_PROTO(const struct fira_local *local,
const struct fira_session *session,
int left_duration_dtu, int n_slots),
TP_ARGS(local, session, left_duration_dtu, n_slots),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(u32, block_start_dtu)
__field(int, block_index)
__field(int, round_index)
__field(bool, stop_inband)
__field(int, left_duration_dtu)
__field(int, n_slots)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->block_start_dtu = session->block_start_dtu;
__entry->block_index = session->block_index;
__entry->round_index = session->round_index;
__entry->stop_inband = session->stop_inband;
__entry->left_duration_dtu = left_duration_dtu;
__entry->n_slots = n_slots;
),
TP_printk(FIRA_SESSION_PR_FMT " block_start_dtu=%#x block_index=%d "
"round_index=%d stop_inband=%s left_duration_dtu=%d n_slots=%d",
FIRA_SESSION_PR_ARG,
__entry->block_start_dtu,
__entry->block_index,
__entry->round_index,
__entry->stop_inband ? "true": "false",
__entry->left_duration_dtu,
__entry->n_slots
)
);
TRACE_EVENT(region_fira_tx_get_frame,
TP_PROTO(const struct fira_session *session,
enum fira_message_id message_id),
TP_ARGS(session, message_id),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum fira_message_id, message_id)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->message_id = message_id;
),
TP_printk(FIRA_SESSION_PR_FMT " message_id=%s",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->message_id, FIRA_MESSAGE_TYPE)
)
);
TRACE_EVENT(region_fira_tx_return,
TP_PROTO(const struct fira_session *session,
enum mcps802154_access_tx_return_reason reason),
TP_ARGS(session, reason),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum mcps802154_access_tx_return_reason, reason)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->reason = reason;
),
TP_printk(FIRA_SESSION_PR_FMT " reason=%s",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->reason,
MCPS802154_TX_REASON_SYMBOLS)
)
);
TRACE_EVENT(
region_fira_session_fsm_change_state,
TP_PROTO(const struct fira_session *session, enum fira_session_state_id new_state_id),
TP_ARGS(session, new_state_id),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(enum fira_session_state_id, new_state_id)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->new_state_id = new_state_id;
),
TP_printk(FIRA_SESSION_PR_FMT " new_state_id=%s",
FIRA_SESSION_PR_ARG,
__print_symbolic(__entry->new_state_id,
FIRA_SESSION_STATE_ID_SYMBOLS)
)
);
TRACE_EVENT(
region_fira_access_done,
TP_PROTO(const struct fira_local *local,
const struct fira_session *session,
int access_duration_dtu, bool error),
TP_ARGS(local, session, access_duration_dtu, error),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, access_duration_dtu)
__field(bool, error)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->access_duration_dtu = access_duration_dtu;
__entry->error = error;
),
TP_printk(FIRA_SESSION_PR_FMT " access_duration_dtu=%d error=%s",
FIRA_SESSION_PR_ARG,
__entry->access_duration_dtu,
__entry->error ? "true": "false"
)
);
TRACE_EVENT(
region_fira_is_controlee_synchronised,
TP_PROTO(const struct fira_session *session,
int drift_ppm, int rx_margin_ppm),
TP_ARGS(session, drift_ppm, rx_margin_ppm),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, block_index_sync)
__field(int, drift_ppm)
__field(int, rx_margin_ppm)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->block_index_sync = session->controlee.block_index_sync;
__entry->drift_ppm = drift_ppm;
__entry->rx_margin_ppm = rx_margin_ppm;
),
TP_printk(FIRA_SESSION_PR_FMT " block_index_sync=%d drift_ppm=%d rx_margin_ppm=%d",
FIRA_SESSION_PR_ARG,
__entry->block_index_sync,
__entry->drift_ppm,
__entry->rx_margin_ppm
)
);
TRACE_EVENT(
region_fira_session_report,
TP_PROTO(const struct fira_session *session,
const struct fira_report_info *report_info),
TP_ARGS(session, report_info),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
__field(int, sequence_number)
__field(int, block_index)
__field(int, n_ranging_data)
__field(int, n_stopped_controlees)
__field(int, n_slots)
__field(bool, stopped)
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
__entry->sequence_number = session->sequence_number;
__entry->block_index = session->block_index;
__entry->n_ranging_data = report_info->n_ranging_data;
__entry->n_stopped_controlees = report_info->n_stopped_controlees;
__entry->n_slots = report_info->n_slots;
__entry->stopped = report_info->stopped;
),
TP_printk(FIRA_SESSION_PR_FMT " sequence_number=%d block_index=%d "
"n_ranging_data=%d n_stopped_controlees=%d n_slots=%d stopped=%s",
FIRA_SESSION_PR_ARG,
__entry->sequence_number,
__entry->block_index,
__entry->n_ranging_data,
__entry->n_stopped_controlees,
__entry->n_slots,
__entry->stopped ? "true": "false"
)
);
TRACE_EVENT(fira_nondeferred_not_supported,
TP_PROTO(const struct fira_session *session),
TP_ARGS(session),
TP_STRUCT__entry(
FIRA_SESSION_ENTRY
),
TP_fast_assign(
FIRA_SESSION_ASSIGN;
),
TP_printk(FIRA_SESSION_PR_FMT,
FIRA_SESSION_PR_ARG
)
);
#endif /* !FIRA_TRACE_H || TRACE_HEADER_MULTI_READ */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE fira_trace
#include <trace/define_trace.h>