162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci* Copyright(c) 2015, 2016, 2017 Intel Corporation. 462306a36Sopenharmony_ci*/ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ) 762306a36Sopenharmony_ci#define __HFI1_TRACE_RC_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/tracepoint.h> 1062306a36Sopenharmony_ci#include <linux/trace_seq.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "hfi.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#undef TRACE_SYSTEM 1562306a36Sopenharmony_ci#define TRACE_SYSTEM hfi1_rc 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_rc_template, 1862306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 psn), 1962306a36Sopenharmony_ci TP_ARGS(qp, psn), 2062306a36Sopenharmony_ci TP_STRUCT__entry( 2162306a36Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 2262306a36Sopenharmony_ci __field(u32, qpn) 2362306a36Sopenharmony_ci __field(u32, s_flags) 2462306a36Sopenharmony_ci __field(u32, psn) 2562306a36Sopenharmony_ci __field(u32, s_psn) 2662306a36Sopenharmony_ci __field(u32, s_next_psn) 2762306a36Sopenharmony_ci __field(u32, s_sending_psn) 2862306a36Sopenharmony_ci __field(u32, s_sending_hpsn) 2962306a36Sopenharmony_ci __field(u32, r_psn) 3062306a36Sopenharmony_ci ), 3162306a36Sopenharmony_ci TP_fast_assign( 3262306a36Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 3362306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 3462306a36Sopenharmony_ci __entry->s_flags = qp->s_flags; 3562306a36Sopenharmony_ci __entry->psn = psn; 3662306a36Sopenharmony_ci __entry->s_psn = qp->s_psn; 3762306a36Sopenharmony_ci __entry->s_next_psn = qp->s_next_psn; 3862306a36Sopenharmony_ci __entry->s_sending_psn = qp->s_sending_psn; 3962306a36Sopenharmony_ci __entry->s_sending_hpsn = qp->s_sending_hpsn; 4062306a36Sopenharmony_ci __entry->r_psn = qp->r_psn; 4162306a36Sopenharmony_ci ), 4262306a36Sopenharmony_ci TP_printk( 4362306a36Sopenharmony_ci "[%s] qpn 0x%x s_flags 0x%x psn 0x%x s_psn 0x%x s_next_psn 0x%x s_sending_psn 0x%x sending_hpsn 0x%x r_psn 0x%x", 4462306a36Sopenharmony_ci __get_str(dev), 4562306a36Sopenharmony_ci __entry->qpn, 4662306a36Sopenharmony_ci __entry->s_flags, 4762306a36Sopenharmony_ci __entry->psn, 4862306a36Sopenharmony_ci __entry->s_psn, 4962306a36Sopenharmony_ci __entry->s_next_psn, 5062306a36Sopenharmony_ci __entry->s_sending_psn, 5162306a36Sopenharmony_ci __entry->s_sending_hpsn, 5262306a36Sopenharmony_ci __entry->r_psn 5362306a36Sopenharmony_ci ) 5462306a36Sopenharmony_ci); 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete, 5762306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 psn), 5862306a36Sopenharmony_ci TP_ARGS(qp, psn) 5962306a36Sopenharmony_ci); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_ack, 6262306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 psn), 6362306a36Sopenharmony_ci TP_ARGS(qp, psn) 6462306a36Sopenharmony_ci); 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error, 6762306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 psn), 6862306a36Sopenharmony_ci TP_ARGS(qp, psn) 6962306a36Sopenharmony_ci); 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ciDEFINE_EVENT(/* event */ 7262306a36Sopenharmony_ci hfi1_rc_template, hfi1_rc_completion, 7362306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 psn), 7462306a36Sopenharmony_ci TP_ARGS(qp, psn) 7562306a36Sopenharmony_ci); 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(/* rc_ack */ 7862306a36Sopenharmony_ci hfi1_rc_ack_template, 7962306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 8062306a36Sopenharmony_ci struct rvt_swqe *wqe), 8162306a36Sopenharmony_ci TP_ARGS(qp, aeth, psn, wqe), 8262306a36Sopenharmony_ci TP_STRUCT__entry(/* entry */ 8362306a36Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 8462306a36Sopenharmony_ci __field(u32, qpn) 8562306a36Sopenharmony_ci __field(u32, aeth) 8662306a36Sopenharmony_ci __field(u32, psn) 8762306a36Sopenharmony_ci __field(u8, opcode) 8862306a36Sopenharmony_ci __field(u32, spsn) 8962306a36Sopenharmony_ci __field(u32, lpsn) 9062306a36Sopenharmony_ci ), 9162306a36Sopenharmony_ci TP_fast_assign(/* assign */ 9262306a36Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 9362306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 9462306a36Sopenharmony_ci __entry->aeth = aeth; 9562306a36Sopenharmony_ci __entry->psn = psn; 9662306a36Sopenharmony_ci __entry->opcode = wqe->wr.opcode; 9762306a36Sopenharmony_ci __entry->spsn = wqe->psn; 9862306a36Sopenharmony_ci __entry->lpsn = wqe->lpsn; 9962306a36Sopenharmony_ci ), 10062306a36Sopenharmony_ci TP_printk(/* print */ 10162306a36Sopenharmony_ci "[%s] qpn 0x%x aeth 0x%x psn 0x%x opcode 0x%x spsn 0x%x lpsn 0x%x", 10262306a36Sopenharmony_ci __get_str(dev), 10362306a36Sopenharmony_ci __entry->qpn, 10462306a36Sopenharmony_ci __entry->aeth, 10562306a36Sopenharmony_ci __entry->psn, 10662306a36Sopenharmony_ci __entry->opcode, 10762306a36Sopenharmony_ci __entry->spsn, 10862306a36Sopenharmony_ci __entry->lpsn 10962306a36Sopenharmony_ci ) 11062306a36Sopenharmony_ci); 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciDEFINE_EVENT(/* do_rc_ack */ 11362306a36Sopenharmony_ci hfi1_rc_ack_template, hfi1_rc_ack_do, 11462306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 11562306a36Sopenharmony_ci struct rvt_swqe *wqe), 11662306a36Sopenharmony_ci TP_ARGS(qp, aeth, psn, wqe) 11762306a36Sopenharmony_ci); 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci#endif /* __HFI1_TRACE_RC_H */ 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 12262306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE 12362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 12462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_rc 12562306a36Sopenharmony_ci#include <trace/define_trace.h> 126