1*145eba1aSCai Huoqing /* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ 2462b6b21SSebastian Sanchez /* 35f14e4e6SSebastian Sanchez * Copyright(c) 2015, 2016, 2017 Intel Corporation. 4462b6b21SSebastian Sanchez */ 5*145eba1aSCai Huoqing 6462b6b21SSebastian Sanchez #if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ) 7462b6b21SSebastian Sanchez #define __HFI1_TRACE_RC_H 8462b6b21SSebastian Sanchez 9462b6b21SSebastian Sanchez #include <linux/tracepoint.h> 10462b6b21SSebastian Sanchez #include <linux/trace_seq.h> 11462b6b21SSebastian Sanchez 12462b6b21SSebastian Sanchez #include "hfi.h" 13462b6b21SSebastian Sanchez 14462b6b21SSebastian Sanchez #undef TRACE_SYSTEM 15462b6b21SSebastian Sanchez #define TRACE_SYSTEM hfi1_rc 16462b6b21SSebastian Sanchez 17462b6b21SSebastian Sanchez DECLARE_EVENT_CLASS(hfi1_rc_template, 18462b6b21SSebastian Sanchez TP_PROTO(struct rvt_qp *qp, u32 psn), 19462b6b21SSebastian Sanchez TP_ARGS(qp, psn), 20462b6b21SSebastian Sanchez TP_STRUCT__entry( 21462b6b21SSebastian Sanchez DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 22462b6b21SSebastian Sanchez __field(u32, qpn) 23462b6b21SSebastian Sanchez __field(u32, s_flags) 24462b6b21SSebastian Sanchez __field(u32, psn) 25462b6b21SSebastian Sanchez __field(u32, s_psn) 26462b6b21SSebastian Sanchez __field(u32, s_next_psn) 27462b6b21SSebastian Sanchez __field(u32, s_sending_psn) 28462b6b21SSebastian Sanchez __field(u32, s_sending_hpsn) 29462b6b21SSebastian Sanchez __field(u32, r_psn) 30462b6b21SSebastian Sanchez ), 31462b6b21SSebastian Sanchez TP_fast_assign( 3278c14b38SJoe Perches DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 33462b6b21SSebastian Sanchez __entry->qpn = qp->ibqp.qp_num; 34462b6b21SSebastian Sanchez __entry->s_flags = qp->s_flags; 35462b6b21SSebastian Sanchez __entry->psn = psn; 36462b6b21SSebastian Sanchez __entry->s_psn = qp->s_psn; 37462b6b21SSebastian Sanchez __entry->s_next_psn = qp->s_next_psn; 38462b6b21SSebastian Sanchez __entry->s_sending_psn = qp->s_sending_psn; 39462b6b21SSebastian Sanchez __entry->s_sending_hpsn = qp->s_sending_hpsn; 40462b6b21SSebastian Sanchez __entry->r_psn = qp->r_psn; 41462b6b21SSebastian Sanchez ), 42462b6b21SSebastian Sanchez TP_printk( 43462b6b21SSebastian Sanchez "[%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", 44462b6b21SSebastian Sanchez __get_str(dev), 45462b6b21SSebastian Sanchez __entry->qpn, 46462b6b21SSebastian Sanchez __entry->s_flags, 47462b6b21SSebastian Sanchez __entry->psn, 48462b6b21SSebastian Sanchez __entry->s_psn, 49462b6b21SSebastian Sanchez __entry->s_next_psn, 50462b6b21SSebastian Sanchez __entry->s_sending_psn, 51462b6b21SSebastian Sanchez __entry->s_sending_hpsn, 52462b6b21SSebastian Sanchez __entry->r_psn 53462b6b21SSebastian Sanchez ) 54462b6b21SSebastian Sanchez ); 55462b6b21SSebastian Sanchez 56462b6b21SSebastian Sanchez DEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete, 57462b6b21SSebastian Sanchez TP_PROTO(struct rvt_qp *qp, u32 psn), 58462b6b21SSebastian Sanchez TP_ARGS(qp, psn) 59462b6b21SSebastian Sanchez ); 60462b6b21SSebastian Sanchez 61462b6b21SSebastian Sanchez DEFINE_EVENT(hfi1_rc_template, hfi1_ack, 62462b6b21SSebastian Sanchez TP_PROTO(struct rvt_qp *qp, u32 psn), 63462b6b21SSebastian Sanchez TP_ARGS(qp, psn) 64462b6b21SSebastian Sanchez ); 65462b6b21SSebastian Sanchez 66462b6b21SSebastian Sanchez DEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error, 67462b6b21SSebastian Sanchez TP_PROTO(struct rvt_qp *qp, u32 psn), 68462b6b21SSebastian Sanchez TP_ARGS(qp, psn) 69462b6b21SSebastian Sanchez ); 70462b6b21SSebastian Sanchez 713ce5daa2SKaike Wan DEFINE_EVENT(/* event */ 723ce5daa2SKaike Wan hfi1_rc_template, hfi1_rc_completion, 733ce5daa2SKaike Wan TP_PROTO(struct rvt_qp *qp, u32 psn), 743ce5daa2SKaike Wan TP_ARGS(qp, psn) 753ce5daa2SKaike Wan ); 763ce5daa2SKaike Wan 773ce5daa2SKaike Wan DECLARE_EVENT_CLASS(/* rc_ack */ 783ce5daa2SKaike Wan hfi1_rc_ack_template, 793ce5daa2SKaike Wan TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 803ce5daa2SKaike Wan struct rvt_swqe *wqe), 813ce5daa2SKaike Wan TP_ARGS(qp, aeth, psn, wqe), 823ce5daa2SKaike Wan TP_STRUCT__entry(/* entry */ 833ce5daa2SKaike Wan DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 843ce5daa2SKaike Wan __field(u32, qpn) 853ce5daa2SKaike Wan __field(u32, aeth) 863ce5daa2SKaike Wan __field(u32, psn) 873ce5daa2SKaike Wan __field(u8, opcode) 883ce5daa2SKaike Wan __field(u32, spsn) 893ce5daa2SKaike Wan __field(u32, lpsn) 903ce5daa2SKaike Wan ), 913ce5daa2SKaike Wan TP_fast_assign(/* assign */ 9278c14b38SJoe Perches DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 933ce5daa2SKaike Wan __entry->qpn = qp->ibqp.qp_num; 943ce5daa2SKaike Wan __entry->aeth = aeth; 953ce5daa2SKaike Wan __entry->psn = psn; 963ce5daa2SKaike Wan __entry->opcode = wqe->wr.opcode; 973ce5daa2SKaike Wan __entry->spsn = wqe->psn; 983ce5daa2SKaike Wan __entry->lpsn = wqe->lpsn; 993ce5daa2SKaike Wan ), 1003ce5daa2SKaike Wan TP_printk(/* print */ 1013ce5daa2SKaike Wan "[%s] qpn 0x%x aeth 0x%x psn 0x%x opcode 0x%x spsn 0x%x lpsn 0x%x", 1023ce5daa2SKaike Wan __get_str(dev), 1033ce5daa2SKaike Wan __entry->qpn, 1043ce5daa2SKaike Wan __entry->aeth, 1053ce5daa2SKaike Wan __entry->psn, 1063ce5daa2SKaike Wan __entry->opcode, 1073ce5daa2SKaike Wan __entry->spsn, 1083ce5daa2SKaike Wan __entry->lpsn 1093ce5daa2SKaike Wan ) 1103ce5daa2SKaike Wan ); 1113ce5daa2SKaike Wan 1123ce5daa2SKaike Wan DEFINE_EVENT(/* do_rc_ack */ 1133ce5daa2SKaike Wan hfi1_rc_ack_template, hfi1_rc_ack_do, 1143ce5daa2SKaike Wan TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 1153ce5daa2SKaike Wan struct rvt_swqe *wqe), 1163ce5daa2SKaike Wan TP_ARGS(qp, aeth, psn, wqe) 1173ce5daa2SKaike Wan ); 1183ce5daa2SKaike Wan 119462b6b21SSebastian Sanchez #endif /* __HFI1_TRACE_RC_H */ 120462b6b21SSebastian Sanchez 121462b6b21SSebastian Sanchez #undef TRACE_INCLUDE_PATH 122462b6b21SSebastian Sanchez #undef TRACE_INCLUDE_FILE 123462b6b21SSebastian Sanchez #define TRACE_INCLUDE_PATH . 124462b6b21SSebastian Sanchez #define TRACE_INCLUDE_FILE trace_rc 125462b6b21SSebastian Sanchez #include <trace/define_trace.h> 126