blob: 3cba8e7f2d8d74b23b233c8927d490d9831cdfb4 [file]
/*
* This file is part of the UWB stack for linux.
*
* Copyright (c) 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_pctt
#if !defined(PCTT_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define PCTT_TRACE_H
#include <linux/tracepoint.h>
#include <net/pctt_region_nl.h>
#include <net/pctt_region_params.h>
#include "pctt_session.h"
#include "pctt_region.h"
/* clang-format off */
#define pctt_device_role_name(name) \
{ PCTT_DEVICE_ROLE_##name, #name }
#define PCTT_DEVICE_ROLE_SYMBOLS \
pctt_device_role_name(RESPONDER), \
pctt_device_role_name(INITIATOR)
TRACE_DEFINE_ENUM(PCTT_DEVICE_ROLE_RESPONDER);
TRACE_DEFINE_ENUM(PCTT_DEVICE_ROLE_INITIATOR);
#define PCTT_DEVICE_ROLE_ENTRY __field(enum pctt_device_role, device_role)
#define PCTT_DEVICE_ROLE_ASSIGN __entry->device_role = params->device_role
#define PCTT_DEVICE_ROLE_PR_FMT "device_role=%s"
#define PCTT_DEVICE_ROLE_PR_ARG \
__print_symbolic(__entry->device_role, PCTT_DEVICE_ROLE_SYMBOLS)
#define pctt_rframe_config_name(name) \
{ PCTT_RFRAME_CONFIG_##name, #name }
#define PCTT_RFRAME_CONFIG_SYMBOLS \
pctt_rframe_config_name(SP0), \
pctt_rframe_config_name(SP1), \
pctt_rframe_config_name(SP2), \
pctt_rframe_config_name(SP3)
TRACE_DEFINE_ENUM(PCTT_RFRAME_CONFIG_SP0);
TRACE_DEFINE_ENUM(PCTT_RFRAME_CONFIG_SP1);
TRACE_DEFINE_ENUM(PCTT_RFRAME_CONFIG_SP2);
TRACE_DEFINE_ENUM(PCTT_RFRAME_CONFIG_SP3);
#define PCTT_RFRAME_CONFIG_ENTRY __field(enum pctt_rframe_config, rframe_config)
#define PCTT_RFRAME_CONFIG_ASSIGN __entry->rframe_config = params->rframe_config
#define PCTT_RFRAME_CONFIG_PR_FMT "rframe_config=%s"
#define PCTT_RFRAME_CONFIG_PR_ARG \
__print_symbolic(__entry->rframe_config, PCTT_RFRAME_CONFIG_SYMBOLS)
#define pctt_prf_mode_name(name) \
{ PCTT_PRF_MODE_##name, #name }
#define PCTT_PRF_MODE_SYMBOLS \
pctt_prf_mode_name(BPRF), \
pctt_prf_mode_name(HPRF), \
pctt_prf_mode_name(HPRF_HIGH_RATE)
TRACE_DEFINE_ENUM(PCTT_PRF_MODE_BPRF);
TRACE_DEFINE_ENUM(PCTT_PRF_MODE_HPRF);
TRACE_DEFINE_ENUM(PCTT_PRF_MODE_HPRF_HIGH_RATE);
#define PCTT_PRF_MODE_ENTRY __field(enum pctt_prf_mode, prf_mode)
#define PCTT_PRF_MODE_ASSIGN __entry->prf_mode = params->prf_mode
#define PCTT_PRF_MODE_PR_FMT "prf_mode=%s"
#define PCTT_PRF_MODE_PR_ARG \
__print_symbolic(__entry->prf_mode, PCTT_PRF_MODE_SYMBOLS)
#define pctt_preamble_duration_name(name) \
{ PCTT_PREAMBLE_DURATION_##name, #name }
#define PCTT_PREAMBLE_DURATION_SYMBOLS \
pctt_preamble_duration_name(32), \
pctt_preamble_duration_name(64)
TRACE_DEFINE_ENUM(PCTT_PREAMBLE_DURATION_32);
TRACE_DEFINE_ENUM(PCTT_PREAMBLE_DURATION_64);
#define PCTT_PREAMBLE_DURATION_ENTRY \
__field(enum pctt_preamble_duration, preamble_duration)
#define PCTT_PREAMBLE_DURATION_ASSIGN \
__entry->preamble_duration = params->preamble_duration
#define PCTT_PREAMBLE_DURATION_PR_FMT "preamble_duration=%s"
#define PCTT_PREAMBLE_DURATION_PR_ARG \
__print_symbolic(__entry->preamble_duration, \
PCTT_PREAMBLE_DURATION_SYMBOLS)
#define pctt_sfd_id_name(name) \
{ PCTT_SFD_ID_##name, #name }
#define PCTT_SFD_ID_SYMBOLS \
pctt_sfd_id_name(0), \
pctt_sfd_id_name(1), \
pctt_sfd_id_name(2), \
pctt_sfd_id_name(3), \
pctt_sfd_id_name(4)
TRACE_DEFINE_ENUM(PCTT_SFD_ID_0);
TRACE_DEFINE_ENUM(PCTT_SFD_ID_1);
TRACE_DEFINE_ENUM(PCTT_SFD_ID_2);
TRACE_DEFINE_ENUM(PCTT_SFD_ID_3);
TRACE_DEFINE_ENUM(PCTT_SFD_ID_4);
#define PCTT_SFD_ID_ENTRY __field(enum pctt_sfd_id, sfd_id)
#define PCTT_SFD_ID_ASSIGN __entry->sfd_id = params->sfd_id
#define PCTT_SFD_ID_PR_FMT "sfd_id=%s"
#define PCTT_SFD_ID_PR_ARG \
__print_symbolic(__entry->sfd_id, PCTT_SFD_ID_SYMBOLS)
#define pctt_number_of_sts_segments_name(name) \
{ PCTT_NUMBER_OF_STS_SEGMENTS_##name, #name }
#define PCTT_NUMBER_OF_STS_SEGMENTS_SYMBOLS \
pctt_number_of_sts_segments_name(NONE), \
pctt_number_of_sts_segments_name(1_SEGMENT), \
pctt_number_of_sts_segments_name(2_SEGMENTS), \
pctt_number_of_sts_segments_name(3_SEGMENTS), \
pctt_number_of_sts_segments_name(4_SEGMENTS)
TRACE_DEFINE_ENUM(PCTT_NUMBER_OF_STS_SEGMENTS_NONE);
TRACE_DEFINE_ENUM(PCTT_NUMBER_OF_STS_SEGMENTS_1_SEGMENT);
TRACE_DEFINE_ENUM(PCTT_NUMBER_OF_STS_SEGMENTS_2_SEGMENTS);
TRACE_DEFINE_ENUM(PCTT_NUMBER_OF_STS_SEGMENTS_3_SEGMENTS);
TRACE_DEFINE_ENUM(PCTT_NUMBER_OF_STS_SEGMENTS_4_SEGMENTS);
#define PCTT_NUMBER_OF_STS_SEGMENTS_ENTRY \
__field(enum pctt_number_of_sts_segments, number_of_sts_segments)
#define PCTT_NUMBER_OF_STS_SEGMENTS_ASSIGN \
__entry->number_of_sts_segments = params->number_of_sts_segments
#define PCTT_NUMBER_OF_STS_SEGMENTS_PR_FMT "number_of_sts_segments=%s"
#define PCTT_NUMBER_OF_STS_SEGMENTS_PR_ARG \
__print_symbolic(__entry->number_of_sts_segments, \
PCTT_NUMBER_OF_STS_SEGMENTS_SYMBOLS)
#define pctt_psdu_data_rate_name(name) \
{ PCTT_PSDU_DATA_RATE_##name, #name }
#define PCTT_PSDU_DATA_RATE_SYMBOLS \
pctt_psdu_data_rate_name(6M81), \
pctt_psdu_data_rate_name(7M80), \
pctt_psdu_data_rate_name(27M2), \
pctt_psdu_data_rate_name(31M2)
TRACE_DEFINE_ENUM(PCTT_PSDU_DATA_RATE_6M81);
TRACE_DEFINE_ENUM(PCTT_PSDU_DATA_RATE_7M80);
TRACE_DEFINE_ENUM(PCTT_PSDU_DATA_RATE_27M2);
TRACE_DEFINE_ENUM(PCTT_PSDU_DATA_RATE_31M2);
#define PCTT_PSDU_DATA_RATE_ENTRY \
__field(enum pctt_psdu_data_rate, psdu_data_rate)
#define PCTT_PSDU_DATA_RATE_ASSIGN \
__entry->psdu_data_rate = params->psdu_data_rate
#define PCTT_PSDU_DATA_RATE_PR_FMT "psdu_data_rate=%s"
#define PCTT_PSDU_DATA_RATE_PR_ARG \
__print_symbolic(__entry->psdu_data_rate, PCTT_PSDU_DATA_RATE_SYMBOLS)
#define pctt_phr_data_rate_name(name) \
{ PCTT_PHR_DATA_RATE##name, #name }
#define PCTT_PHR_DATA_RATE_SYMBOLS \
pctt_phr_data_rate_name(850k), \
pctt_phr_data_rate_name(6M81), \
TRACE_DEFINE_ENUM(PCTT_PHR_DATA_RATE_850k);
TRACE_DEFINE_ENUM(PCTT_PHR_DATA_RATE_6M81);
#define PCTT_PHR_DATA_RATE_ENTRY \
__field(enum pctt_phr_data_rate, phr_data_rate)
#define PCTT_PHR_DATA_RATE_ASSIGN \
__entry->phr_data_rate = params->phr_data_rate
#define PCTT_PHR_DATA_RATE_PR_FMT "phr_data_rate=%s"
#define PCTT_PHR_DATA_RATE_PR_ARG \
__print_symbolic(__entry->phr_data_rate, PCTT_PHR_DATA_RATE_SYMBOLS)
#define pctt_mac_fcs_type_name(name) \
{ PCTT_MAC_FCS_TYPE_##name, #name }
#define PCTT_MAC_FCS_TYPE_SYMBOLS \
pctt_mac_fcs_type_name(CRC_16), \
pctt_mac_fcs_type_name(CRC_32)
TRACE_DEFINE_ENUM(PCTT_MAC_FCS_TYPE_CRC_16);
TRACE_DEFINE_ENUM(PCTT_MAC_FCS_TYPE_CRC_32);
#define PCTT_MAC_FCS_TYPE_ENTRY __field(enum pctt_mac_fcs_type, mac_fcs_type)
#define PCTT_MAC_FCS_TYPE_ASSIGN __entry->mac_fcs_type = params->mac_fcs_type
#define PCTT_MAC_FCS_TYPE_PR_FMT "mac_fcs_type=%s"
#define PCTT_MAC_FCS_TYPE_PR_ARG \
__print_symbolic(__entry->mac_fcs_type, PCTT_MAC_FCS_TYPE_SYMBOLS)
/* clang-format off */
#define pctt_status_ranging_name(name) \
{ PCTT_STATUS_RANGING_##name, #name }
#define PCTT_STATUS_RANGING_SYMBOLS \
pctt_status_ranging_name(INTERNAL_ERROR), \
pctt_status_ranging_name(SUCCESS), \
pctt_status_ranging_name(TX_FAILED), \
pctt_status_ranging_name(RX_TIMEOUT), \
pctt_status_ranging_name(RX_PHY_DEC_FAILED), \
pctt_status_ranging_name(RX_PHY_TOA_FAILED), \
pctt_status_ranging_name(RX_PHY_STS_FAILED), \
pctt_status_ranging_name(RX_MAC_DEC_FAILED), \
pctt_status_ranging_name(RX_MAC_IE_DEC_FAILED), \
pctt_status_ranging_name(RX_MAC_IE_MISSING)
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_INTERNAL_ERROR);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_SUCCESS);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_TX_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_TIMEOUT);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_PHY_DEC_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_PHY_TOA_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_PHY_STS_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_MAC_DEC_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_MAC_IE_DEC_FAILED);
TRACE_DEFINE_ENUM(PCTT_STATUS_RANGING_RX_MAC_IE_MISSING);
#define PCTT_STATUS_RANGING_ENTRY \
__field(enum pctt_status_ranging, status_ranging)
#define PCTT_STATUS_RANGING_ASSIGN __entry->status_ranging = status_ranging
#define PCTT_STATUS_RANGING_PR_FMT "status_ranging=%s"
#define PCTT_STATUS_RANGING_PR_ARG \
__print_symbolic(__entry->status_ranging, PCTT_STATUS_RANGING_SYMBOLS)
#define pctt_session_state_name(name) \
{ PCTT_SESSION_STATE_##name, #name }
#define PCTT_SESSION_STATE_SYMBOLS \
pctt_session_state_name(INIT), \
pctt_session_state_name(DEINIT), \
pctt_session_state_name(ACTIVE), \
pctt_session_state_name(IDLE)
TRACE_DEFINE_ENUM(PCTT_SESSION_STATE_INIT);
TRACE_DEFINE_ENUM(PCTT_SESSION_STATE_DEINIT);
TRACE_DEFINE_ENUM(PCTT_SESSION_STATE_ACTIVE);
TRACE_DEFINE_ENUM(PCTT_SESSION_STATE_IDLE);
#define PCTT_SESSION_STATE_ENTRY(name) __field(enum pctt_session_state, name)
#define PCTT_SESSION_STATE_ASSIGN(name) __entry->name = name
#define PCTT_SESSION_STATE_PR_FMT(name) "name=%s"
#define PCTT_SESSION_STATE_PR_ARG(name) \
__print_symbolic(__entry->name, PCTT_SESSION_STATE_SYMBOLS)
#define pctt_id_name(name) \
{ PCTT_ID_ATTR_##name, #name }
#define PCTT_ID_SYMBOLS \
pctt_id_name(UNSPEC), \
pctt_id_name(PERIODIC_TX), \
pctt_id_name(PER_RX), \
pctt_id_name(RX), \
pctt_id_name(LOOPBACK), \
pctt_id_name(SS_TWR), \
pctt_id_name(RX)
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_UNSPEC);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_PERIODIC_TX);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_PER_RX);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_RX);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_LOOPBACK);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_SS_TWR);
TRACE_DEFINE_ENUM(PCTT_ID_ATTR_STOP_TEST);
#define PCTT_ID_ENTRY __field(enum pctt_id_attrs, cmd_id)
#define PCTT_ID_ASSIGN __entry->cmd_id = cmd_id
#define PCTT_ID_PR_FMT "cmd_id=%s"
#define PCTT_ID_PR_ARG \
__print_symbolic(__entry->cmd_id, PCTT_ID_SYMBOLS)
TRACE_EVENT(
region_pctt_session_start_test,
TP_PROTO(enum pctt_id_attrs cmd_id,
const struct pctt_session_params *params),
TP_ARGS(cmd_id, params),
TP_STRUCT__entry(
PCTT_ID_ENTRY
PCTT_DEVICE_ROLE_ENTRY
__field(__le16, short_addr)
__field(__le16, dst_short_addr)
__field(int, slot_duration_dtu)
__field(int, channel_number)
__field(int, preamble_code_index)
PCTT_RFRAME_CONFIG_ENTRY
PCTT_PRF_MODE_ENTRY
PCTT_PREAMBLE_DURATION_ENTRY
PCTT_SFD_ID_ENTRY
PCTT_NUMBER_OF_STS_SEGMENTS_ENTRY
PCTT_PSDU_DATA_RATE_ENTRY
PCTT_MAC_FCS_TYPE_ENTRY
__field(u8, tx_adaptive_payload_power)
__field(uint32_t, sts_index)
),
TP_fast_assign(
PCTT_ID_ASSIGN;
PCTT_DEVICE_ROLE_ASSIGN;
__entry->short_addr = params->short_addr;
__entry->dst_short_addr = params->dst_short_addr;
__entry->slot_duration_dtu = params->slot_duration_dtu;
__entry->channel_number = params->channel_number;
__entry->preamble_code_index = params->preamble_code_index;
PCTT_RFRAME_CONFIG_ASSIGN;
PCTT_PRF_MODE_ASSIGN;
PCTT_PREAMBLE_DURATION_ASSIGN;
PCTT_SFD_ID_ASSIGN;
PCTT_NUMBER_OF_STS_SEGMENTS_ASSIGN;
PCTT_PSDU_DATA_RATE_ASSIGN;
PCTT_MAC_FCS_TYPE_ASSIGN;
__entry->tx_adaptive_payload_power =
params->tx_adaptive_payload_power;
__entry->sts_index = params->sts_index;
),
TP_printk(
PCTT_ID_PR_FMT " " PCTT_DEVICE_ROLE_PR_FMT " "
"short_addr=0x%x "
"dst_short_addr=0x%x slot_duration_dtu=%d "
"channel_number=%d preamble_code_index=%d "
PCTT_RFRAME_CONFIG_PR_FMT " "
PCTT_PRF_MODE_PR_FMT " "
PCTT_PREAMBLE_DURATION_PR_FMT " "
PCTT_SFD_ID_PR_FMT " "
PCTT_NUMBER_OF_STS_SEGMENTS_PR_FMT " "
PCTT_PSDU_DATA_RATE_PR_FMT " "
PCTT_MAC_FCS_TYPE_PR_FMT " "
"tx_adaptive_payload_power=%u sts_index=%u",
PCTT_ID_PR_ARG, PCTT_DEVICE_ROLE_PR_ARG,
__entry->short_addr,
__entry->dst_short_addr,
__entry->slot_duration_dtu,
__entry->channel_number,
__entry->preamble_code_index,
PCTT_RFRAME_CONFIG_PR_ARG,
PCTT_PRF_MODE_PR_ARG,
PCTT_PREAMBLE_DURATION_PR_ARG,
PCTT_SFD_ID_PR_ARG,
PCTT_NUMBER_OF_STS_SEGMENTS_PR_ARG,
PCTT_PSDU_DATA_RATE_PR_ARG,
PCTT_MAC_FCS_TYPE_PR_ARG,
__entry->tx_adaptive_payload_power,
__entry->sts_index
)
);
TRACE_EVENT(region_pctt_session_set_state,
TP_PROTO(enum pctt_session_state old_state,
enum pctt_session_state new_state),
TP_ARGS(old_state, new_state),
TP_STRUCT__entry(
PCTT_SESSION_STATE_ENTRY(old_state)
PCTT_SESSION_STATE_ENTRY(new_state)
),
TP_fast_assign(
PCTT_SESSION_STATE_ASSIGN(old_state);
PCTT_SESSION_STATE_ASSIGN(new_state);
),
TP_printk(PCTT_SESSION_STATE_PR_FMT(old_state) " "
PCTT_SESSION_STATE_PR_FMT(new_state),
PCTT_SESSION_STATE_PR_ARG(old_state),
PCTT_SESSION_STATE_PR_ARG(new_state))
);
TRACE_EVENT(region_pctt_report_periodic_tx,
TP_PROTO(enum pctt_status_ranging status_ranging),
TP_ARGS(status_ranging),
TP_STRUCT__entry(
PCTT_STATUS_RANGING_ENTRY
),
TP_fast_assign(
PCTT_STATUS_RANGING_ASSIGN;
),
TP_printk(PCTT_STATUS_RANGING_PR_FMT,
PCTT_STATUS_RANGING_PR_ARG)
);
TRACE_EVENT(region_pctt_report_per_rx,
TP_PROTO(enum pctt_status_ranging status_ranging,
const struct pctt_test_per_rx_results *per_rx),
TP_ARGS(status_ranging, per_rx),
TP_STRUCT__entry(
PCTT_STATUS_RANGING_ENTRY
__field(u32, attempts)
__field(u32, acq_detect)
__field(u32, acq_reject)
__field(u32, rx_fail)
__field(u32, sync_cir_ready)
__field(u32, sfd_fail)
__field(u32, sfd_found)
__field(u32, phr_dec_error)
__field(u32, phr_bit_error)
__field(u32, psdu_dec_error)
__field(u32, psdu_bit_error)
__field(u32, sts_found)
__field(u32, eof)
__field(u8, rssi)
),
TP_fast_assign(
PCTT_STATUS_RANGING_ASSIGN;
__entry->attempts = per_rx->attempts;
__entry->acq_detect = per_rx->acq_detect;
__entry->acq_reject = per_rx->acq_reject;
__entry->rx_fail = per_rx->rx_fail;
__entry->sync_cir_ready = per_rx->sync_cir_ready;
__entry->sfd_fail = per_rx->sfd_fail;
__entry->sfd_found = per_rx->sfd_found;
__entry->phr_dec_error = per_rx->phr_dec_error;
__entry->phr_bit_error = per_rx->phr_bit_error;
__entry->psdu_dec_error = per_rx->psdu_dec_error;
__entry->psdu_bit_error = per_rx->psdu_bit_error;
__entry->sts_found = per_rx->sts_found;
__entry->eof = per_rx->eof;
__entry->rssi = per_rx->rssi;
),
TP_printk(PCTT_STATUS_RANGING_PR_FMT " "
"attempts=%u acq_detect=%u acq_reject=%u "
"rx_fail=%u sync_cir_ready=%u sfd_fail=%u "
"sfd_found=%u phr_dec_error=%u phr_bit_error=%u "
"psdu_dec_error=%u psdu_bit_error=%u sts_found=%u "
"eof=%u rssi=%u ",
PCTT_STATUS_RANGING_PR_ARG, __entry->attempts,
__entry->acq_detect, __entry->acq_reject,
__entry->rx_fail, __entry->sync_cir_ready,
__entry->sfd_fail, __entry->sfd_found,
__entry->phr_dec_error, __entry->phr_bit_error,
__entry->psdu_dec_error, __entry->psdu_bit_error,
__entry->sts_found, __entry->eof, __entry->rssi)
);
TRACE_EVENT(region_pctt_report_rx,
TP_PROTO(enum pctt_status_ranging status_ranging,
const struct pctt_test_rx_results *rx),
TP_ARGS(status_ranging, rx),
TP_STRUCT__entry(
PCTT_STATUS_RANGING_ENTRY
__field(u32, rx_done_ts_int)
__field(u16, rx_done_ts_frac)
__field(s16, aoa_azimuth)
__field(s16, aoa_elevation)
__field(u8, toa_gap)
__field(u16, phr)
__field(u8, rssi)
__field(u16, psdu_data_len)
__dynamic_array(u8, psdu_data, rx->psdu_data_len)
),
TP_fast_assign(
PCTT_STATUS_RANGING_ASSIGN;
__entry->rx_done_ts_int = rx->rx_done_ts_int;
__entry->rx_done_ts_frac = rx->rx_done_ts_frac;
__entry->aoa_azimuth = rx->aoa_azimuth;
__entry->aoa_elevation = rx->aoa_elevation;
__entry->toa_gap = rx->toa_gap;
__entry->phr = rx->phr;
__entry->rssi = rx->rssi;
__entry->psdu_data_len = rx->psdu_data_len;
memcpy(__get_dynamic_array(psdu_data), rx->psdu_data,
__get_dynamic_array_len(psdu_data));
),
TP_printk(PCTT_STATUS_RANGING_PR_FMT " "
"rx_done_ts_int=%u rx_done_ts_frac=%u "
"aoa_azimuth=%d aoa_elevation=%d toa_gap=%u "
"phr=%u rssi=%u psdu_data_len=%u psdu_data=%s",
PCTT_STATUS_RANGING_PR_ARG, __entry->rx_done_ts_int,
__entry->rx_done_ts_frac, __entry->aoa_azimuth,
__entry->aoa_elevation, __entry->toa_gap, __entry->phr,
__entry->rssi, __entry->psdu_data_len,
__print_hex(__get_dynamic_array(psdu_data),
__get_dynamic_array_len(psdu_data)))
);
TRACE_EVENT(region_pctt_report_loopback,
TP_PROTO(enum pctt_status_ranging status_ranging),
TP_ARGS(status_ranging),
TP_STRUCT__entry(
PCTT_STATUS_RANGING_ENTRY
),
TP_fast_assign(
PCTT_STATUS_RANGING_ASSIGN;
),
TP_printk(PCTT_STATUS_RANGING_PR_FMT,
PCTT_STATUS_RANGING_PR_ARG)
);
TRACE_EVENT(region_pctt_report_ss_twr,
TP_PROTO(enum pctt_status_ranging status_ranging,
const struct pctt_test_ss_twr_results *ss_twr),
TP_ARGS(status_ranging, ss_twr),
TP_STRUCT__entry(
PCTT_STATUS_RANGING_ENTRY
__field(u32, measurement_rctu)
__field(s16, pdoa_azimuth_deg_q7)
__field(s16, pdoa_elevation_deg_q7)
__field(u8, rssi)
__field(s16, aoa_azimuth_deg_q7)
__field(s16, aoa_elevation_deg_q7)
),
TP_fast_assign(
PCTT_STATUS_RANGING_ASSIGN;
__entry->measurement_rctu = ss_twr->measurement_rctu;
__entry->pdoa_azimuth_deg_q7 = ss_twr->pdoa_azimuth_deg_q7;
__entry->pdoa_elevation_deg_q7 = ss_twr->pdoa_elevation_deg_q7;
__entry->rssi = ss_twr->rssi;
__entry->aoa_azimuth_deg_q7 = ss_twr->aoa_azimuth_deg_q7;
__entry->aoa_elevation_deg_q7 = ss_twr->aoa_elevation_deg_q7;
),
TP_printk(PCTT_STATUS_RANGING_PR_FMT " measurement_rctu=%u "
"pdoa_azimuth_deg_q7=%u pdoa_elevation_deg_q7=%u "
"rssi=%u aoa_azimuth_deg_q7=%u aoa_elevation_deg_q7=%u",
PCTT_STATUS_RANGING_PR_ARG, __entry->measurement_rctu,
__entry->pdoa_azimuth_deg_q7, __entry->pdoa_elevation_deg_q7,
__entry->rssi, __entry->aoa_azimuth_deg_q7, __entry->aoa_elevation_deg_q7)
);
TRACE_EVENT(region_pctt_report_nla_put_failure,
TP_PROTO(enum pctt_id_attrs cmd_id),
TP_ARGS(cmd_id),
TP_STRUCT__entry(
PCTT_ID_ENTRY
),
TP_fast_assign(
PCTT_ID_ASSIGN;
),
TP_printk(PCTT_ID_PR_FMT,
PCTT_ID_PR_ARG)
);
/* clang-format on */
#endif /* !PCTT_TRACE_H || TRACE_HEADER_MULTI_READ */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE pctt_trace
#include <trace/define_trace.h>