1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 /* 3 * Copyright(c) 2015, 2016, 2017 Intel Corporation. 4 */ 5 6 #if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ) 7 #define __HFI1_TRACE_RC_H 8 9 #include <linux/tracepoint.h> 10 #include <linux/trace_seq.h> 11 12 #include "hfi.h" 13 14 #undef TRACE_SYSTEM 15 #define TRACE_SYSTEM hfi1_rc 16 17 DECLARE_EVENT_CLASS(hfi1_rc_template, 18 TP_PROTO(struct rvt_qp *qp, u32 psn), 19 TP_ARGS(qp, psn), 20 TP_STRUCT__entry( 21 DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 22 __field(u32, qpn) 23 __field(u32, s_flags) 24 __field(u32, psn) 25 __field(u32, s_psn) 26 __field(u32, s_next_psn) 27 __field(u32, s_sending_psn) 28 __field(u32, s_sending_hpsn) 29 __field(u32, r_psn) 30 ), 31 TP_fast_assign( 32 DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 33 __entry->qpn = qp->ibqp.qp_num; 34 __entry->s_flags = qp->s_flags; 35 __entry->psn = psn; 36 __entry->s_psn = qp->s_psn; 37 __entry->s_next_psn = qp->s_next_psn; 38 __entry->s_sending_psn = qp->s_sending_psn; 39 __entry->s_sending_hpsn = qp->s_sending_hpsn; 40 __entry->r_psn = qp->r_psn; 41 ), 42 TP_printk( 43 "[%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", 44 __get_str(dev), 45 __entry->qpn, 46 __entry->s_flags, 47 __entry->psn, 48 __entry->s_psn, 49 __entry->s_next_psn, 50 __entry->s_sending_psn, 51 __entry->s_sending_hpsn, 52 __entry->r_psn 53 ) 54 ); 55 56 DEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete, 57 TP_PROTO(struct rvt_qp *qp, u32 psn), 58 TP_ARGS(qp, psn) 59 ); 60 61 DEFINE_EVENT(hfi1_rc_template, hfi1_ack, 62 TP_PROTO(struct rvt_qp *qp, u32 psn), 63 TP_ARGS(qp, psn) 64 ); 65 66 DEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error, 67 TP_PROTO(struct rvt_qp *qp, u32 psn), 68 TP_ARGS(qp, psn) 69 ); 70 71 DEFINE_EVENT(/* event */ 72 hfi1_rc_template, hfi1_rc_completion, 73 TP_PROTO(struct rvt_qp *qp, u32 psn), 74 TP_ARGS(qp, psn) 75 ); 76 77 DECLARE_EVENT_CLASS(/* rc_ack */ 78 hfi1_rc_ack_template, 79 TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 80 struct rvt_swqe *wqe), 81 TP_ARGS(qp, aeth, psn, wqe), 82 TP_STRUCT__entry(/* entry */ 83 DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 84 __field(u32, qpn) 85 __field(u32, aeth) 86 __field(u32, psn) 87 __field(u8, opcode) 88 __field(u32, spsn) 89 __field(u32, lpsn) 90 ), 91 TP_fast_assign(/* assign */ 92 DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 93 __entry->qpn = qp->ibqp.qp_num; 94 __entry->aeth = aeth; 95 __entry->psn = psn; 96 __entry->opcode = wqe->wr.opcode; 97 __entry->spsn = wqe->psn; 98 __entry->lpsn = wqe->lpsn; 99 ), 100 TP_printk(/* print */ 101 "[%s] qpn 0x%x aeth 0x%x psn 0x%x opcode 0x%x spsn 0x%x lpsn 0x%x", 102 __get_str(dev), 103 __entry->qpn, 104 __entry->aeth, 105 __entry->psn, 106 __entry->opcode, 107 __entry->spsn, 108 __entry->lpsn 109 ) 110 ); 111 112 DEFINE_EVENT(/* do_rc_ack */ 113 hfi1_rc_ack_template, hfi1_rc_ack_do, 114 TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 115 struct rvt_swqe *wqe), 116 TP_ARGS(qp, aeth, psn, wqe) 117 ); 118 119 #endif /* __HFI1_TRACE_RC_H */ 120 121 #undef TRACE_INCLUDE_PATH 122 #undef TRACE_INCLUDE_FILE 123 #define TRACE_INCLUDE_PATH . 124 #define TRACE_INCLUDE_FILE trace_rc 125 #include <trace/define_trace.h> 126