0001
0002
0003
0004
0005
0006 #if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ)
0007 #define __HFI1_TRACE_RC_H
0008
0009 #include <linux/tracepoint.h>
0010 #include <linux/trace_seq.h>
0011
0012 #include "hfi.h"
0013
0014 #undef TRACE_SYSTEM
0015 #define TRACE_SYSTEM hfi1_rc
0016
0017 DECLARE_EVENT_CLASS(hfi1_rc_template,
0018 TP_PROTO(struct rvt_qp *qp, u32 psn),
0019 TP_ARGS(qp, psn),
0020 TP_STRUCT__entry(
0021 DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
0022 __field(u32, qpn)
0023 __field(u32, s_flags)
0024 __field(u32, psn)
0025 __field(u32, s_psn)
0026 __field(u32, s_next_psn)
0027 __field(u32, s_sending_psn)
0028 __field(u32, s_sending_hpsn)
0029 __field(u32, r_psn)
0030 ),
0031 TP_fast_assign(
0032 DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device));
0033 __entry->qpn = qp->ibqp.qp_num;
0034 __entry->s_flags = qp->s_flags;
0035 __entry->psn = psn;
0036 __entry->s_psn = qp->s_psn;
0037 __entry->s_next_psn = qp->s_next_psn;
0038 __entry->s_sending_psn = qp->s_sending_psn;
0039 __entry->s_sending_hpsn = qp->s_sending_hpsn;
0040 __entry->r_psn = qp->r_psn;
0041 ),
0042 TP_printk(
0043 "[%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",
0044 __get_str(dev),
0045 __entry->qpn,
0046 __entry->s_flags,
0047 __entry->psn,
0048 __entry->s_psn,
0049 __entry->s_next_psn,
0050 __entry->s_sending_psn,
0051 __entry->s_sending_hpsn,
0052 __entry->r_psn
0053 )
0054 );
0055
0056 DEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete,
0057 TP_PROTO(struct rvt_qp *qp, u32 psn),
0058 TP_ARGS(qp, psn)
0059 );
0060
0061 DEFINE_EVENT(hfi1_rc_template, hfi1_ack,
0062 TP_PROTO(struct rvt_qp *qp, u32 psn),
0063 TP_ARGS(qp, psn)
0064 );
0065
0066 DEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error,
0067 TP_PROTO(struct rvt_qp *qp, u32 psn),
0068 TP_ARGS(qp, psn)
0069 );
0070
0071 DEFINE_EVENT(
0072 hfi1_rc_template, hfi1_rc_completion,
0073 TP_PROTO(struct rvt_qp *qp, u32 psn),
0074 TP_ARGS(qp, psn)
0075 );
0076
0077 DECLARE_EVENT_CLASS(
0078 hfi1_rc_ack_template,
0079 TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn,
0080 struct rvt_swqe *wqe),
0081 TP_ARGS(qp, aeth, psn, wqe),
0082 TP_STRUCT__entry(
0083 DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
0084 __field(u32, qpn)
0085 __field(u32, aeth)
0086 __field(u32, psn)
0087 __field(u8, opcode)
0088 __field(u32, spsn)
0089 __field(u32, lpsn)
0090 ),
0091 TP_fast_assign(
0092 DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device));
0093 __entry->qpn = qp->ibqp.qp_num;
0094 __entry->aeth = aeth;
0095 __entry->psn = psn;
0096 __entry->opcode = wqe->wr.opcode;
0097 __entry->spsn = wqe->psn;
0098 __entry->lpsn = wqe->lpsn;
0099 ),
0100 TP_printk(
0101 "[%s] qpn 0x%x aeth 0x%x psn 0x%x opcode 0x%x spsn 0x%x lpsn 0x%x",
0102 __get_str(dev),
0103 __entry->qpn,
0104 __entry->aeth,
0105 __entry->psn,
0106 __entry->opcode,
0107 __entry->spsn,
0108 __entry->lpsn
0109 )
0110 );
0111
0112 DEFINE_EVENT(
0113 hfi1_rc_ack_template, hfi1_rc_ack_do,
0114 TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn,
0115 struct rvt_swqe *wqe),
0116 TP_ARGS(qp, aeth, psn, wqe)
0117 );
0118
0119 #endif
0120
0121 #undef TRACE_INCLUDE_PATH
0122 #undef TRACE_INCLUDE_FILE
0123 #define TRACE_INCLUDE_PATH .
0124 #define TRACE_INCLUDE_FILE trace_rc
0125 #include <trace/define_trace.h>