1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright(c) 2018 Intel Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun #if !defined(__HFI1_TRACE_TID_H) || defined(TRACE_HEADER_MULTI_READ) 7*4882a593Smuzhiyun #define __HFI1_TRACE_TID_H 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <linux/tracepoint.h> 10*4882a593Smuzhiyun #include <linux/trace_seq.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include "hfi.h" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define tidtype_name(type) { PT_##type, #type } 15*4882a593Smuzhiyun #define show_tidtype(type) \ 16*4882a593Smuzhiyun __print_symbolic(type, \ 17*4882a593Smuzhiyun tidtype_name(EXPECTED), \ 18*4882a593Smuzhiyun tidtype_name(EAGER), \ 19*4882a593Smuzhiyun tidtype_name(INVALID)) \ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #undef TRACE_SYSTEM 22*4882a593Smuzhiyun #define TRACE_SYSTEM hfi1_tid 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun u8 hfi1_trace_get_tid_ctrl(u32 ent); 25*4882a593Smuzhiyun u16 hfi1_trace_get_tid_len(u32 ent); 26*4882a593Smuzhiyun u16 hfi1_trace_get_tid_idx(u32 ent); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define OPFN_PARAM_PRN "[%s] qpn 0x%x %s OPFN: qp 0x%x, max read %u, " \ 29*4882a593Smuzhiyun "max write %u, max length %u, jkey 0x%x timeout %u " \ 30*4882a593Smuzhiyun "urg %u" 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define TID_FLOW_PRN "[%s] qpn 0x%x flow %d: idx %d resp_ib_psn 0x%x " \ 33*4882a593Smuzhiyun "generation 0x%x fpsn 0x%x-%x r_next_psn 0x%x " \ 34*4882a593Smuzhiyun "ib_psn 0x%x-%x npagesets %u tnode_cnt %u " \ 35*4882a593Smuzhiyun "tidcnt %u tid_idx %u tid_offset %u length %u sent %u" 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define TID_NODE_PRN "[%s] qpn 0x%x %s idx %u grp base 0x%x map 0x%x " \ 38*4882a593Smuzhiyun "used %u cnt %u" 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define RSP_INFO_PRN "[%s] qpn 0x%x state 0x%x s_state 0x%x psn 0x%x " \ 41*4882a593Smuzhiyun "r_psn 0x%x r_state 0x%x r_flags 0x%x " \ 42*4882a593Smuzhiyun "r_head_ack_queue %u s_tail_ack_queue %u " \ 43*4882a593Smuzhiyun "s_acked_ack_queue %u s_ack_state 0x%x " \ 44*4882a593Smuzhiyun "s_nak_state 0x%x s_flags 0x%x ps_flags 0x%x " \ 45*4882a593Smuzhiyun "iow_flags 0x%lx" 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define SENDER_INFO_PRN "[%s] qpn 0x%x state 0x%x s_cur %u s_tail %u " \ 48*4882a593Smuzhiyun "s_head %u s_acked %u s_last %u s_psn 0x%x " \ 49*4882a593Smuzhiyun "s_last_psn 0x%x s_flags 0x%x ps_flags 0x%x " \ 50*4882a593Smuzhiyun "iow_flags 0x%lx s_state 0x%x s_num_rd %u s_retry %u" 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define TID_READ_SENDER_PRN "[%s] qpn 0x%x newreq %u tid_r_reqs %u " \ 53*4882a593Smuzhiyun "tid_r_comp %u pending_tid_r_segs %u " \ 54*4882a593Smuzhiyun "s_flags 0x%x ps_flags 0x%x iow_flags 0x%lx " \ 55*4882a593Smuzhiyun "s_state 0x%x hw_flow_index %u generation 0x%x " \ 56*4882a593Smuzhiyun "fpsn 0x%x" 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define TID_REQ_PRN "[%s] qpn 0x%x newreq %u opcode 0x%x psn 0x%x lpsn 0x%x " \ 59*4882a593Smuzhiyun "cur_seg %u comp_seg %u ack_seg %u alloc_seg %u " \ 60*4882a593Smuzhiyun "total_segs %u setup_head %u clear_tail %u flow_idx %u " \ 61*4882a593Smuzhiyun "acked_tail %u state %u r_ack_psn 0x%x r_flow_psn 0x%x " \ 62*4882a593Smuzhiyun "r_last_ackd 0x%x s_next_psn 0x%x" 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define RCV_ERR_PRN "[%s] qpn 0x%x s_flags 0x%x state 0x%x " \ 65*4882a593Smuzhiyun "s_acked_ack_queue %u s_tail_ack_queue %u " \ 66*4882a593Smuzhiyun "r_head_ack_queue %u opcode 0x%x psn 0x%x r_psn 0x%x " \ 67*4882a593Smuzhiyun " diff %d" 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define TID_WRITE_RSPDR_PRN "[%s] qpn 0x%x r_tid_head %u r_tid_tail %u " \ 70*4882a593Smuzhiyun "r_tid_ack %u r_tid_alloc %u alloc_w_segs %u " \ 71*4882a593Smuzhiyun "pending_tid_w_segs %u sync_pt %s " \ 72*4882a593Smuzhiyun "ps_nak_psn 0x%x ps_nak_state 0x%x " \ 73*4882a593Smuzhiyun "prnr_nak_state 0x%x hw_flow_index %u generation "\ 74*4882a593Smuzhiyun "0x%x fpsn 0x%x resync %s" \ 75*4882a593Smuzhiyun "r_next_psn_kdeth 0x%x" 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define TID_WRITE_SENDER_PRN "[%s] qpn 0x%x newreq %u s_tid_cur %u " \ 78*4882a593Smuzhiyun "s_tid_tail %u s_tid_head %u " \ 79*4882a593Smuzhiyun "pending_tid_w_resp %u n_requests %u " \ 80*4882a593Smuzhiyun "n_tid_requests %u s_flags 0x%x ps_flags 0x%x "\ 81*4882a593Smuzhiyun "iow_flags 0x%lx s_state 0x%x s_retry %u" 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define KDETH_EFLAGS_ERR_PRN "[%s] qpn 0x%x TID ERR: RcvType 0x%x " \ 84*4882a593Smuzhiyun "RcvTypeError 0x%x PSN 0x%x" 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* class */ 87*4882a593Smuzhiyun hfi1_exp_tid_reg_unreg, 88*4882a593Smuzhiyun TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 89*4882a593Smuzhiyun unsigned long va, unsigned long pa, dma_addr_t dma), 90*4882a593Smuzhiyun TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma), 91*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 92*4882a593Smuzhiyun __field(unsigned int, ctxt) 93*4882a593Smuzhiyun __field(u16, subctxt) 94*4882a593Smuzhiyun __field(u32, rarr) 95*4882a593Smuzhiyun __field(u32, npages) 96*4882a593Smuzhiyun __field(unsigned long, va) 97*4882a593Smuzhiyun __field(unsigned long, pa) 98*4882a593Smuzhiyun __field(dma_addr_t, dma) 99*4882a593Smuzhiyun ), 100*4882a593Smuzhiyun TP_fast_assign(/* assign */ 101*4882a593Smuzhiyun __entry->ctxt = ctxt; 102*4882a593Smuzhiyun __entry->subctxt = subctxt; 103*4882a593Smuzhiyun __entry->rarr = rarr; 104*4882a593Smuzhiyun __entry->npages = npages; 105*4882a593Smuzhiyun __entry->va = va; 106*4882a593Smuzhiyun __entry->pa = pa; 107*4882a593Smuzhiyun __entry->dma = dma; 108*4882a593Smuzhiyun ), 109*4882a593Smuzhiyun TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx, va:0x%lx dma:0x%llx", 110*4882a593Smuzhiyun __entry->ctxt, 111*4882a593Smuzhiyun __entry->subctxt, 112*4882a593Smuzhiyun __entry->rarr, 113*4882a593Smuzhiyun __entry->npages, 114*4882a593Smuzhiyun __entry->pa, 115*4882a593Smuzhiyun __entry->va, 116*4882a593Smuzhiyun __entry->dma 117*4882a593Smuzhiyun ) 118*4882a593Smuzhiyun ); 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun DEFINE_EVENT(/* exp_tid_unreg */ 121*4882a593Smuzhiyun hfi1_exp_tid_reg_unreg, hfi1_exp_tid_unreg, 122*4882a593Smuzhiyun TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 123*4882a593Smuzhiyun unsigned long va, unsigned long pa, dma_addr_t dma), 124*4882a593Smuzhiyun TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma) 125*4882a593Smuzhiyun ); 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun DEFINE_EVENT(/* exp_tid_reg */ 128*4882a593Smuzhiyun hfi1_exp_tid_reg_unreg, hfi1_exp_tid_reg, 129*4882a593Smuzhiyun TP_PROTO(unsigned int ctxt, u16 subctxt, u32 rarr, u32 npages, 130*4882a593Smuzhiyun unsigned long va, unsigned long pa, dma_addr_t dma), 131*4882a593Smuzhiyun TP_ARGS(ctxt, subctxt, rarr, npages, va, pa, dma) 132*4882a593Smuzhiyun ); 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun TRACE_EVENT(/* put_tid */ 135*4882a593Smuzhiyun hfi1_put_tid, 136*4882a593Smuzhiyun TP_PROTO(struct hfi1_devdata *dd, 137*4882a593Smuzhiyun u32 index, u32 type, unsigned long pa, u16 order), 138*4882a593Smuzhiyun TP_ARGS(dd, index, type, pa, order), 139*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 140*4882a593Smuzhiyun DD_DEV_ENTRY(dd) 141*4882a593Smuzhiyun __field(unsigned long, pa) 142*4882a593Smuzhiyun __field(u32, index) 143*4882a593Smuzhiyun __field(u32, type) 144*4882a593Smuzhiyun __field(u16, order) 145*4882a593Smuzhiyun ), 146*4882a593Smuzhiyun TP_fast_assign(/* assign */ 147*4882a593Smuzhiyun DD_DEV_ASSIGN(dd); 148*4882a593Smuzhiyun __entry->pa = pa; 149*4882a593Smuzhiyun __entry->index = index; 150*4882a593Smuzhiyun __entry->type = type; 151*4882a593Smuzhiyun __entry->order = order; 152*4882a593Smuzhiyun ), 153*4882a593Smuzhiyun TP_printk("[%s] type %s pa %lx index %u order %u", 154*4882a593Smuzhiyun __get_str(dev), 155*4882a593Smuzhiyun show_tidtype(__entry->type), 156*4882a593Smuzhiyun __entry->pa, 157*4882a593Smuzhiyun __entry->index, 158*4882a593Smuzhiyun __entry->order 159*4882a593Smuzhiyun ) 160*4882a593Smuzhiyun ); 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun TRACE_EVENT(/* exp_tid_inval */ 163*4882a593Smuzhiyun hfi1_exp_tid_inval, 164*4882a593Smuzhiyun TP_PROTO(unsigned int ctxt, u16 subctxt, unsigned long va, u32 rarr, 165*4882a593Smuzhiyun u32 npages, dma_addr_t dma), 166*4882a593Smuzhiyun TP_ARGS(ctxt, subctxt, va, rarr, npages, dma), 167*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 168*4882a593Smuzhiyun __field(unsigned int, ctxt) 169*4882a593Smuzhiyun __field(u16, subctxt) 170*4882a593Smuzhiyun __field(unsigned long, va) 171*4882a593Smuzhiyun __field(u32, rarr) 172*4882a593Smuzhiyun __field(u32, npages) 173*4882a593Smuzhiyun __field(dma_addr_t, dma) 174*4882a593Smuzhiyun ), 175*4882a593Smuzhiyun TP_fast_assign(/* assign */ 176*4882a593Smuzhiyun __entry->ctxt = ctxt; 177*4882a593Smuzhiyun __entry->subctxt = subctxt; 178*4882a593Smuzhiyun __entry->va = va; 179*4882a593Smuzhiyun __entry->rarr = rarr; 180*4882a593Smuzhiyun __entry->npages = npages; 181*4882a593Smuzhiyun __entry->dma = dma; 182*4882a593Smuzhiyun ), 183*4882a593Smuzhiyun TP_printk("[%u:%u] entry:%u, %u pages @ 0x%lx dma: 0x%llx", 184*4882a593Smuzhiyun __entry->ctxt, 185*4882a593Smuzhiyun __entry->subctxt, 186*4882a593Smuzhiyun __entry->rarr, 187*4882a593Smuzhiyun __entry->npages, 188*4882a593Smuzhiyun __entry->va, 189*4882a593Smuzhiyun __entry->dma 190*4882a593Smuzhiyun ) 191*4882a593Smuzhiyun ); 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* opfn_state */ 194*4882a593Smuzhiyun hfi1_opfn_state_template, 195*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 196*4882a593Smuzhiyun TP_ARGS(qp), 197*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 198*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 199*4882a593Smuzhiyun __field(u32, qpn) 200*4882a593Smuzhiyun __field(u16, requested) 201*4882a593Smuzhiyun __field(u16, completed) 202*4882a593Smuzhiyun __field(u8, curr) 203*4882a593Smuzhiyun ), 204*4882a593Smuzhiyun TP_fast_assign(/* assign */ 205*4882a593Smuzhiyun struct hfi1_qp_priv *priv = qp->priv; 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 208*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 209*4882a593Smuzhiyun __entry->requested = priv->opfn.requested; 210*4882a593Smuzhiyun __entry->completed = priv->opfn.completed; 211*4882a593Smuzhiyun __entry->curr = priv->opfn.curr; 212*4882a593Smuzhiyun ), 213*4882a593Smuzhiyun TP_printk(/* print */ 214*4882a593Smuzhiyun "[%s] qpn 0x%x requested 0x%x completed 0x%x curr 0x%x", 215*4882a593Smuzhiyun __get_str(dev), 216*4882a593Smuzhiyun __entry->qpn, 217*4882a593Smuzhiyun __entry->requested, 218*4882a593Smuzhiyun __entry->completed, 219*4882a593Smuzhiyun __entry->curr 220*4882a593Smuzhiyun ) 221*4882a593Smuzhiyun ); 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 224*4882a593Smuzhiyun hfi1_opfn_state_template, hfi1_opfn_state_conn_request, 225*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 226*4882a593Smuzhiyun TP_ARGS(qp) 227*4882a593Smuzhiyun ); 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 230*4882a593Smuzhiyun hfi1_opfn_state_template, hfi1_opfn_state_sched_conn_request, 231*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 232*4882a593Smuzhiyun TP_ARGS(qp) 233*4882a593Smuzhiyun ); 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 236*4882a593Smuzhiyun hfi1_opfn_state_template, hfi1_opfn_state_conn_response, 237*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 238*4882a593Smuzhiyun TP_ARGS(qp) 239*4882a593Smuzhiyun ); 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 242*4882a593Smuzhiyun hfi1_opfn_state_template, hfi1_opfn_state_conn_reply, 243*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 244*4882a593Smuzhiyun TP_ARGS(qp) 245*4882a593Smuzhiyun ); 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 248*4882a593Smuzhiyun hfi1_opfn_state_template, hfi1_opfn_state_conn_error, 249*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 250*4882a593Smuzhiyun TP_ARGS(qp) 251*4882a593Smuzhiyun ); 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* opfn_data */ 254*4882a593Smuzhiyun hfi1_opfn_data_template, 255*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 256*4882a593Smuzhiyun TP_ARGS(qp, capcode, data), 257*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 258*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 259*4882a593Smuzhiyun __field(u32, qpn) 260*4882a593Smuzhiyun __field(u32, state) 261*4882a593Smuzhiyun __field(u8, capcode) 262*4882a593Smuzhiyun __field(u64, data) 263*4882a593Smuzhiyun ), 264*4882a593Smuzhiyun TP_fast_assign(/* assign */ 265*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 266*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 267*4882a593Smuzhiyun __entry->state = qp->state; 268*4882a593Smuzhiyun __entry->capcode = capcode; 269*4882a593Smuzhiyun __entry->data = data; 270*4882a593Smuzhiyun ), 271*4882a593Smuzhiyun TP_printk(/* printk */ 272*4882a593Smuzhiyun "[%s] qpn 0x%x (state 0x%x) Capcode %u data 0x%llx", 273*4882a593Smuzhiyun __get_str(dev), 274*4882a593Smuzhiyun __entry->qpn, 275*4882a593Smuzhiyun __entry->state, 276*4882a593Smuzhiyun __entry->capcode, 277*4882a593Smuzhiyun __entry->data 278*4882a593Smuzhiyun ) 279*4882a593Smuzhiyun ); 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 282*4882a593Smuzhiyun hfi1_opfn_data_template, hfi1_opfn_data_conn_request, 283*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 284*4882a593Smuzhiyun TP_ARGS(qp, capcode, data) 285*4882a593Smuzhiyun ); 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 288*4882a593Smuzhiyun hfi1_opfn_data_template, hfi1_opfn_data_conn_response, 289*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 290*4882a593Smuzhiyun TP_ARGS(qp, capcode, data) 291*4882a593Smuzhiyun ); 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 294*4882a593Smuzhiyun hfi1_opfn_data_template, hfi1_opfn_data_conn_reply, 295*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 capcode, u64 data), 296*4882a593Smuzhiyun TP_ARGS(qp, capcode, data) 297*4882a593Smuzhiyun ); 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* opfn_param */ 300*4882a593Smuzhiyun hfi1_opfn_param_template, 301*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char remote, 302*4882a593Smuzhiyun struct tid_rdma_params *param), 303*4882a593Smuzhiyun TP_ARGS(qp, remote, param), 304*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 305*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 306*4882a593Smuzhiyun __field(u32, qpn) 307*4882a593Smuzhiyun __field(char, remote) 308*4882a593Smuzhiyun __field(u32, param_qp) 309*4882a593Smuzhiyun __field(u32, max_len) 310*4882a593Smuzhiyun __field(u16, jkey) 311*4882a593Smuzhiyun __field(u8, max_read) 312*4882a593Smuzhiyun __field(u8, max_write) 313*4882a593Smuzhiyun __field(u8, timeout) 314*4882a593Smuzhiyun __field(u8, urg) 315*4882a593Smuzhiyun ), 316*4882a593Smuzhiyun TP_fast_assign(/* assign */ 317*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 318*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 319*4882a593Smuzhiyun __entry->remote = remote; 320*4882a593Smuzhiyun __entry->param_qp = param->qp; 321*4882a593Smuzhiyun __entry->max_len = param->max_len; 322*4882a593Smuzhiyun __entry->jkey = param->jkey; 323*4882a593Smuzhiyun __entry->max_read = param->max_read; 324*4882a593Smuzhiyun __entry->max_write = param->max_write; 325*4882a593Smuzhiyun __entry->timeout = param->timeout; 326*4882a593Smuzhiyun __entry->urg = param->urg; 327*4882a593Smuzhiyun ), 328*4882a593Smuzhiyun TP_printk(/* print */ 329*4882a593Smuzhiyun OPFN_PARAM_PRN, 330*4882a593Smuzhiyun __get_str(dev), 331*4882a593Smuzhiyun __entry->qpn, 332*4882a593Smuzhiyun __entry->remote ? "remote" : "local", 333*4882a593Smuzhiyun __entry->param_qp, 334*4882a593Smuzhiyun __entry->max_read, 335*4882a593Smuzhiyun __entry->max_write, 336*4882a593Smuzhiyun __entry->max_len, 337*4882a593Smuzhiyun __entry->jkey, 338*4882a593Smuzhiyun __entry->timeout, 339*4882a593Smuzhiyun __entry->urg 340*4882a593Smuzhiyun ) 341*4882a593Smuzhiyun ); 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 344*4882a593Smuzhiyun hfi1_opfn_param_template, hfi1_opfn_param, 345*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char remote, 346*4882a593Smuzhiyun struct tid_rdma_params *param), 347*4882a593Smuzhiyun TP_ARGS(qp, remote, param) 348*4882a593Smuzhiyun ); 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* msg */ 351*4882a593Smuzhiyun hfi1_msg_template, 352*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 353*4882a593Smuzhiyun TP_ARGS(qp, msg, more), 354*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 355*4882a593Smuzhiyun __field(u32, qpn) 356*4882a593Smuzhiyun __string(msg, msg) 357*4882a593Smuzhiyun __field(u64, more) 358*4882a593Smuzhiyun ), 359*4882a593Smuzhiyun TP_fast_assign(/* assign */ 360*4882a593Smuzhiyun __entry->qpn = qp ? qp->ibqp.qp_num : 0; 361*4882a593Smuzhiyun __assign_str(msg, msg); 362*4882a593Smuzhiyun __entry->more = more; 363*4882a593Smuzhiyun ), 364*4882a593Smuzhiyun TP_printk(/* print */ 365*4882a593Smuzhiyun "qpn 0x%x %s 0x%llx", 366*4882a593Smuzhiyun __entry->qpn, 367*4882a593Smuzhiyun __get_str(msg), 368*4882a593Smuzhiyun __entry->more 369*4882a593Smuzhiyun ) 370*4882a593Smuzhiyun ); 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 373*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_opfn_conn_request, 374*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 375*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 376*4882a593Smuzhiyun ); 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 379*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_opfn_conn_error, 380*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 381*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 382*4882a593Smuzhiyun ); 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 385*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_alloc_tids, 386*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 387*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 388*4882a593Smuzhiyun ); 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 391*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_tid_restart_req, 392*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 393*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 394*4882a593Smuzhiyun ); 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 397*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_handle_kdeth_eflags, 398*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 399*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 400*4882a593Smuzhiyun ); 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 403*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_tid_timeout, 404*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 405*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 406*4882a593Smuzhiyun ); 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 409*4882a593Smuzhiyun hfi1_msg_template, hfi1_msg_tid_retry_timeout, 410*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u64 more), 411*4882a593Smuzhiyun TP_ARGS(qp, msg, more) 412*4882a593Smuzhiyun ); 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_flow_page */ 415*4882a593Smuzhiyun hfi1_tid_flow_page_template, 416*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, 417*4882a593Smuzhiyun char mtu8k, char v1, void *vaddr), 418*4882a593Smuzhiyun TP_ARGS(qp, flow, index, mtu8k, v1, vaddr), 419*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 420*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 421*4882a593Smuzhiyun __field(u32, qpn) 422*4882a593Smuzhiyun __field(char, mtu8k) 423*4882a593Smuzhiyun __field(char, v1) 424*4882a593Smuzhiyun __field(u32, index) 425*4882a593Smuzhiyun __field(u64, page) 426*4882a593Smuzhiyun __field(u64, vaddr) 427*4882a593Smuzhiyun ), 428*4882a593Smuzhiyun TP_fast_assign(/* assign */ 429*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 430*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 431*4882a593Smuzhiyun __entry->mtu8k = mtu8k; 432*4882a593Smuzhiyun __entry->v1 = v1; 433*4882a593Smuzhiyun __entry->index = index; 434*4882a593Smuzhiyun __entry->page = vaddr ? (u64)virt_to_page(vaddr) : 0ULL; 435*4882a593Smuzhiyun __entry->vaddr = (u64)vaddr; 436*4882a593Smuzhiyun ), 437*4882a593Smuzhiyun TP_printk(/* print */ 438*4882a593Smuzhiyun "[%s] qpn 0x%x page[%u]: page 0x%llx %s 0x%llx", 439*4882a593Smuzhiyun __get_str(dev), 440*4882a593Smuzhiyun __entry->qpn, 441*4882a593Smuzhiyun __entry->index, 442*4882a593Smuzhiyun __entry->page, 443*4882a593Smuzhiyun __entry->mtu8k ? (__entry->v1 ? "v1" : "v0") : "vaddr", 444*4882a593Smuzhiyun __entry->vaddr 445*4882a593Smuzhiyun ) 446*4882a593Smuzhiyun ); 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 449*4882a593Smuzhiyun hfi1_tid_flow_page_template, hfi1_tid_flow_page, 450*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, struct tid_rdma_flow *flow, u32 index, 451*4882a593Smuzhiyun char mtu8k, char v1, void *vaddr), 452*4882a593Smuzhiyun TP_ARGS(qp, flow, index, mtu8k, v1, vaddr) 453*4882a593Smuzhiyun ); 454*4882a593Smuzhiyun 455*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_pageset */ 456*4882a593Smuzhiyun hfi1_tid_pageset_template, 457*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 index, u16 idx, u16 count), 458*4882a593Smuzhiyun TP_ARGS(qp, index, idx, count), 459*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 460*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 461*4882a593Smuzhiyun __field(u32, qpn) 462*4882a593Smuzhiyun __field(u32, index) 463*4882a593Smuzhiyun __field(u16, idx) 464*4882a593Smuzhiyun __field(u16, count) 465*4882a593Smuzhiyun ), 466*4882a593Smuzhiyun TP_fast_assign(/* assign */ 467*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 468*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 469*4882a593Smuzhiyun __entry->index = index; 470*4882a593Smuzhiyun __entry->idx = idx; 471*4882a593Smuzhiyun __entry->count = count; 472*4882a593Smuzhiyun ), 473*4882a593Smuzhiyun TP_printk(/* print */ 474*4882a593Smuzhiyun "[%s] qpn 0x%x list[%u]: idx %u count %u", 475*4882a593Smuzhiyun __get_str(dev), 476*4882a593Smuzhiyun __entry->qpn, 477*4882a593Smuzhiyun __entry->index, 478*4882a593Smuzhiyun __entry->idx, 479*4882a593Smuzhiyun __entry->count 480*4882a593Smuzhiyun ) 481*4882a593Smuzhiyun ); 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 484*4882a593Smuzhiyun hfi1_tid_pageset_template, hfi1_tid_pageset, 485*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 index, u16 idx, u16 count), 486*4882a593Smuzhiyun TP_ARGS(qp, index, idx, count) 487*4882a593Smuzhiyun ); 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_fow */ 490*4882a593Smuzhiyun hfi1_tid_flow_template, 491*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 492*4882a593Smuzhiyun TP_ARGS(qp, index, flow), 493*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 494*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 495*4882a593Smuzhiyun __field(u32, qpn) 496*4882a593Smuzhiyun __field(int, index) 497*4882a593Smuzhiyun __field(int, idx) 498*4882a593Smuzhiyun __field(u32, resp_ib_psn) 499*4882a593Smuzhiyun __field(u32, generation) 500*4882a593Smuzhiyun __field(u32, fspsn) 501*4882a593Smuzhiyun __field(u32, flpsn) 502*4882a593Smuzhiyun __field(u32, r_next_psn) 503*4882a593Smuzhiyun __field(u32, ib_spsn) 504*4882a593Smuzhiyun __field(u32, ib_lpsn) 505*4882a593Smuzhiyun __field(u32, npagesets) 506*4882a593Smuzhiyun __field(u32, tnode_cnt) 507*4882a593Smuzhiyun __field(u32, tidcnt) 508*4882a593Smuzhiyun __field(u32, tid_idx) 509*4882a593Smuzhiyun __field(u32, tid_offset) 510*4882a593Smuzhiyun __field(u32, length) 511*4882a593Smuzhiyun __field(u32, sent) 512*4882a593Smuzhiyun ), 513*4882a593Smuzhiyun TP_fast_assign(/* assign */ 514*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 515*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 516*4882a593Smuzhiyun __entry->index = index; 517*4882a593Smuzhiyun __entry->idx = flow->idx; 518*4882a593Smuzhiyun __entry->resp_ib_psn = flow->flow_state.resp_ib_psn; 519*4882a593Smuzhiyun __entry->generation = flow->flow_state.generation; 520*4882a593Smuzhiyun __entry->fspsn = full_flow_psn(flow, 521*4882a593Smuzhiyun flow->flow_state.spsn); 522*4882a593Smuzhiyun __entry->flpsn = full_flow_psn(flow, 523*4882a593Smuzhiyun flow->flow_state.lpsn); 524*4882a593Smuzhiyun __entry->r_next_psn = flow->flow_state.r_next_psn; 525*4882a593Smuzhiyun __entry->ib_spsn = flow->flow_state.ib_spsn; 526*4882a593Smuzhiyun __entry->ib_lpsn = flow->flow_state.ib_lpsn; 527*4882a593Smuzhiyun __entry->npagesets = flow->npagesets; 528*4882a593Smuzhiyun __entry->tnode_cnt = flow->tnode_cnt; 529*4882a593Smuzhiyun __entry->tidcnt = flow->tidcnt; 530*4882a593Smuzhiyun __entry->tid_idx = flow->tid_idx; 531*4882a593Smuzhiyun __entry->tid_offset = flow->tid_offset; 532*4882a593Smuzhiyun __entry->length = flow->length; 533*4882a593Smuzhiyun __entry->sent = flow->sent; 534*4882a593Smuzhiyun ), 535*4882a593Smuzhiyun TP_printk(/* print */ 536*4882a593Smuzhiyun TID_FLOW_PRN, 537*4882a593Smuzhiyun __get_str(dev), 538*4882a593Smuzhiyun __entry->qpn, 539*4882a593Smuzhiyun __entry->index, 540*4882a593Smuzhiyun __entry->idx, 541*4882a593Smuzhiyun __entry->resp_ib_psn, 542*4882a593Smuzhiyun __entry->generation, 543*4882a593Smuzhiyun __entry->fspsn, 544*4882a593Smuzhiyun __entry->flpsn, 545*4882a593Smuzhiyun __entry->r_next_psn, 546*4882a593Smuzhiyun __entry->ib_spsn, 547*4882a593Smuzhiyun __entry->ib_lpsn, 548*4882a593Smuzhiyun __entry->npagesets, 549*4882a593Smuzhiyun __entry->tnode_cnt, 550*4882a593Smuzhiyun __entry->tidcnt, 551*4882a593Smuzhiyun __entry->tid_idx, 552*4882a593Smuzhiyun __entry->tid_offset, 553*4882a593Smuzhiyun __entry->length, 554*4882a593Smuzhiyun __entry->sent 555*4882a593Smuzhiyun ) 556*4882a593Smuzhiyun ); 557*4882a593Smuzhiyun 558*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 559*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_alloc, 560*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 561*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 562*4882a593Smuzhiyun ); 563*4882a593Smuzhiyun 564*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 565*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_build_read_pkt, 566*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 567*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 568*4882a593Smuzhiyun ); 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 571*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_build_read_resp, 572*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 573*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 574*4882a593Smuzhiyun ); 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 577*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_rcv_read_req, 578*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 579*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 580*4882a593Smuzhiyun ); 581*4882a593Smuzhiyun 582*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 583*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_rcv_read_resp, 584*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 585*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 586*4882a593Smuzhiyun ); 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 589*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_restart_req, 590*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 591*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 592*4882a593Smuzhiyun ); 593*4882a593Smuzhiyun 594*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 595*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_build_write_resp, 596*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 597*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 598*4882a593Smuzhiyun ); 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 601*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_rcv_write_resp, 602*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 603*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 604*4882a593Smuzhiyun ); 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 607*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_build_write_data, 608*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 609*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 610*4882a593Smuzhiyun ); 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 613*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_rcv_tid_ack, 614*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 615*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 616*4882a593Smuzhiyun ); 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 619*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_rcv_resync, 620*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 621*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 622*4882a593Smuzhiyun ); 623*4882a593Smuzhiyun 624*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 625*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_handle_kdeth_eflags, 626*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 627*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 628*4882a593Smuzhiyun ); 629*4882a593Smuzhiyun 630*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 631*4882a593Smuzhiyun hfi1_tid_flow_template, hfi1_tid_flow_read_kdeth_eflags, 632*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct tid_rdma_flow *flow), 633*4882a593Smuzhiyun TP_ARGS(qp, index, flow) 634*4882a593Smuzhiyun ); 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_node */ 637*4882a593Smuzhiyun hfi1_tid_node_template, 638*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u32 index, u32 base, 639*4882a593Smuzhiyun u8 map, u8 used, u8 cnt), 640*4882a593Smuzhiyun TP_ARGS(qp, msg, index, base, map, used, cnt), 641*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 642*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 643*4882a593Smuzhiyun __field(u32, qpn) 644*4882a593Smuzhiyun __string(msg, msg) 645*4882a593Smuzhiyun __field(u32, index) 646*4882a593Smuzhiyun __field(u32, base) 647*4882a593Smuzhiyun __field(u8, map) 648*4882a593Smuzhiyun __field(u8, used) 649*4882a593Smuzhiyun __field(u8, cnt) 650*4882a593Smuzhiyun ), 651*4882a593Smuzhiyun TP_fast_assign(/* assign */ 652*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 653*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 654*4882a593Smuzhiyun __assign_str(msg, msg); 655*4882a593Smuzhiyun __entry->index = index; 656*4882a593Smuzhiyun __entry->base = base; 657*4882a593Smuzhiyun __entry->map = map; 658*4882a593Smuzhiyun __entry->used = used; 659*4882a593Smuzhiyun __entry->cnt = cnt; 660*4882a593Smuzhiyun ), 661*4882a593Smuzhiyun TP_printk(/* print */ 662*4882a593Smuzhiyun TID_NODE_PRN, 663*4882a593Smuzhiyun __get_str(dev), 664*4882a593Smuzhiyun __entry->qpn, 665*4882a593Smuzhiyun __get_str(msg), 666*4882a593Smuzhiyun __entry->index, 667*4882a593Smuzhiyun __entry->base, 668*4882a593Smuzhiyun __entry->map, 669*4882a593Smuzhiyun __entry->used, 670*4882a593Smuzhiyun __entry->cnt 671*4882a593Smuzhiyun ) 672*4882a593Smuzhiyun ); 673*4882a593Smuzhiyun 674*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 675*4882a593Smuzhiyun hfi1_tid_node_template, hfi1_tid_node_add, 676*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, const char *msg, u32 index, u32 base, 677*4882a593Smuzhiyun u8 map, u8 used, u8 cnt), 678*4882a593Smuzhiyun TP_ARGS(qp, msg, index, base, map, used, cnt) 679*4882a593Smuzhiyun ); 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_entry */ 682*4882a593Smuzhiyun hfi1_tid_entry_template, 683*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 ent), 684*4882a593Smuzhiyun TP_ARGS(qp, index, ent), 685*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 686*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 687*4882a593Smuzhiyun __field(u32, qpn) 688*4882a593Smuzhiyun __field(int, index) 689*4882a593Smuzhiyun __field(u8, ctrl) 690*4882a593Smuzhiyun __field(u16, idx) 691*4882a593Smuzhiyun __field(u16, len) 692*4882a593Smuzhiyun ), 693*4882a593Smuzhiyun TP_fast_assign(/* assign */ 694*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 695*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 696*4882a593Smuzhiyun __entry->index = index; 697*4882a593Smuzhiyun __entry->ctrl = hfi1_trace_get_tid_ctrl(ent); 698*4882a593Smuzhiyun __entry->idx = hfi1_trace_get_tid_idx(ent); 699*4882a593Smuzhiyun __entry->len = hfi1_trace_get_tid_len(ent); 700*4882a593Smuzhiyun ), 701*4882a593Smuzhiyun TP_printk(/* print */ 702*4882a593Smuzhiyun "[%s] qpn 0x%x TID entry %d: idx %u len %u ctrl 0x%x", 703*4882a593Smuzhiyun __get_str(dev), 704*4882a593Smuzhiyun __entry->qpn, 705*4882a593Smuzhiyun __entry->index, 706*4882a593Smuzhiyun __entry->idx, 707*4882a593Smuzhiyun __entry->len, 708*4882a593Smuzhiyun __entry->ctrl 709*4882a593Smuzhiyun ) 710*4882a593Smuzhiyun ); 711*4882a593Smuzhiyun 712*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 713*4882a593Smuzhiyun hfi1_tid_entry_template, hfi1_tid_entry_alloc, 714*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 entry), 715*4882a593Smuzhiyun TP_ARGS(qp, index, entry) 716*4882a593Smuzhiyun ); 717*4882a593Smuzhiyun 718*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 719*4882a593Smuzhiyun hfi1_tid_entry_template, hfi1_tid_entry_build_read_resp, 720*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 ent), 721*4882a593Smuzhiyun TP_ARGS(qp, index, ent) 722*4882a593Smuzhiyun ); 723*4882a593Smuzhiyun 724*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 725*4882a593Smuzhiyun hfi1_tid_entry_template, hfi1_tid_entry_rcv_read_req, 726*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 ent), 727*4882a593Smuzhiyun TP_ARGS(qp, index, ent) 728*4882a593Smuzhiyun ); 729*4882a593Smuzhiyun 730*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 731*4882a593Smuzhiyun hfi1_tid_entry_template, hfi1_tid_entry_rcv_write_resp, 732*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 entry), 733*4882a593Smuzhiyun TP_ARGS(qp, index, entry) 734*4882a593Smuzhiyun ); 735*4882a593Smuzhiyun 736*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 737*4882a593Smuzhiyun hfi1_tid_entry_template, hfi1_tid_entry_build_write_data, 738*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, u32 entry), 739*4882a593Smuzhiyun TP_ARGS(qp, index, entry) 740*4882a593Smuzhiyun ); 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* rsp_info */ 743*4882a593Smuzhiyun hfi1_responder_info_template, 744*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 745*4882a593Smuzhiyun TP_ARGS(qp, psn), 746*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 747*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 748*4882a593Smuzhiyun __field(u32, qpn) 749*4882a593Smuzhiyun __field(u8, state) 750*4882a593Smuzhiyun __field(u8, s_state) 751*4882a593Smuzhiyun __field(u32, psn) 752*4882a593Smuzhiyun __field(u32, r_psn) 753*4882a593Smuzhiyun __field(u8, r_state) 754*4882a593Smuzhiyun __field(u8, r_flags) 755*4882a593Smuzhiyun __field(u8, r_head_ack_queue) 756*4882a593Smuzhiyun __field(u8, s_tail_ack_queue) 757*4882a593Smuzhiyun __field(u8, s_acked_ack_queue) 758*4882a593Smuzhiyun __field(u8, s_ack_state) 759*4882a593Smuzhiyun __field(u8, s_nak_state) 760*4882a593Smuzhiyun __field(u8, r_nak_state) 761*4882a593Smuzhiyun __field(u32, s_flags) 762*4882a593Smuzhiyun __field(u32, ps_flags) 763*4882a593Smuzhiyun __field(unsigned long, iow_flags) 764*4882a593Smuzhiyun ), 765*4882a593Smuzhiyun TP_fast_assign(/* assign */ 766*4882a593Smuzhiyun struct hfi1_qp_priv *priv = qp->priv; 767*4882a593Smuzhiyun 768*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 769*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 770*4882a593Smuzhiyun __entry->state = qp->state; 771*4882a593Smuzhiyun __entry->s_state = qp->s_state; 772*4882a593Smuzhiyun __entry->psn = psn; 773*4882a593Smuzhiyun __entry->r_psn = qp->r_psn; 774*4882a593Smuzhiyun __entry->r_state = qp->r_state; 775*4882a593Smuzhiyun __entry->r_flags = qp->r_flags; 776*4882a593Smuzhiyun __entry->r_head_ack_queue = qp->r_head_ack_queue; 777*4882a593Smuzhiyun __entry->s_tail_ack_queue = qp->s_tail_ack_queue; 778*4882a593Smuzhiyun __entry->s_acked_ack_queue = qp->s_acked_ack_queue; 779*4882a593Smuzhiyun __entry->s_ack_state = qp->s_ack_state; 780*4882a593Smuzhiyun __entry->s_nak_state = qp->s_nak_state; 781*4882a593Smuzhiyun __entry->s_flags = qp->s_flags; 782*4882a593Smuzhiyun __entry->ps_flags = priv->s_flags; 783*4882a593Smuzhiyun __entry->iow_flags = priv->s_iowait.flags; 784*4882a593Smuzhiyun ), 785*4882a593Smuzhiyun TP_printk(/* print */ 786*4882a593Smuzhiyun RSP_INFO_PRN, 787*4882a593Smuzhiyun __get_str(dev), 788*4882a593Smuzhiyun __entry->qpn, 789*4882a593Smuzhiyun __entry->state, 790*4882a593Smuzhiyun __entry->s_state, 791*4882a593Smuzhiyun __entry->psn, 792*4882a593Smuzhiyun __entry->r_psn, 793*4882a593Smuzhiyun __entry->r_state, 794*4882a593Smuzhiyun __entry->r_flags, 795*4882a593Smuzhiyun __entry->r_head_ack_queue, 796*4882a593Smuzhiyun __entry->s_tail_ack_queue, 797*4882a593Smuzhiyun __entry->s_acked_ack_queue, 798*4882a593Smuzhiyun __entry->s_ack_state, 799*4882a593Smuzhiyun __entry->s_nak_state, 800*4882a593Smuzhiyun __entry->s_flags, 801*4882a593Smuzhiyun __entry->ps_flags, 802*4882a593Smuzhiyun __entry->iow_flags 803*4882a593Smuzhiyun ) 804*4882a593Smuzhiyun ); 805*4882a593Smuzhiyun 806*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 807*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_make_rc_ack, 808*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 809*4882a593Smuzhiyun TP_ARGS(qp, psn) 810*4882a593Smuzhiyun ); 811*4882a593Smuzhiyun 812*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 813*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_rcv_tid_read_req, 814*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 815*4882a593Smuzhiyun TP_ARGS(qp, psn) 816*4882a593Smuzhiyun ); 817*4882a593Smuzhiyun 818*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 819*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_tid_rcv_error, 820*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 821*4882a593Smuzhiyun TP_ARGS(qp, psn) 822*4882a593Smuzhiyun ); 823*4882a593Smuzhiyun 824*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 825*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_tid_write_alloc_res, 826*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 827*4882a593Smuzhiyun TP_ARGS(qp, psn) 828*4882a593Smuzhiyun ); 829*4882a593Smuzhiyun 830*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 831*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_rcv_tid_write_req, 832*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 833*4882a593Smuzhiyun TP_ARGS(qp, psn) 834*4882a593Smuzhiyun ); 835*4882a593Smuzhiyun 836*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 837*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_build_tid_write_resp, 838*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 839*4882a593Smuzhiyun TP_ARGS(qp, psn) 840*4882a593Smuzhiyun ); 841*4882a593Smuzhiyun 842*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 843*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_rcv_tid_write_data, 844*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 845*4882a593Smuzhiyun TP_ARGS(qp, psn) 846*4882a593Smuzhiyun ); 847*4882a593Smuzhiyun 848*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 849*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_make_tid_ack, 850*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 851*4882a593Smuzhiyun TP_ARGS(qp, psn) 852*4882a593Smuzhiyun ); 853*4882a593Smuzhiyun 854*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 855*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_handle_kdeth_eflags, 856*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 857*4882a593Smuzhiyun TP_ARGS(qp, psn) 858*4882a593Smuzhiyun ); 859*4882a593Smuzhiyun 860*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 861*4882a593Smuzhiyun hfi1_responder_info_template, hfi1_rsp_read_kdeth_eflags, 862*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 psn), 863*4882a593Smuzhiyun TP_ARGS(qp, psn) 864*4882a593Smuzhiyun ); 865*4882a593Smuzhiyun 866*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* sender_info */ 867*4882a593Smuzhiyun hfi1_sender_info_template, 868*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 869*4882a593Smuzhiyun TP_ARGS(qp), 870*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 871*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 872*4882a593Smuzhiyun __field(u32, qpn) 873*4882a593Smuzhiyun __field(u8, state) 874*4882a593Smuzhiyun __field(u32, s_cur) 875*4882a593Smuzhiyun __field(u32, s_tail) 876*4882a593Smuzhiyun __field(u32, s_head) 877*4882a593Smuzhiyun __field(u32, s_acked) 878*4882a593Smuzhiyun __field(u32, s_last) 879*4882a593Smuzhiyun __field(u32, s_psn) 880*4882a593Smuzhiyun __field(u32, s_last_psn) 881*4882a593Smuzhiyun __field(u32, s_flags) 882*4882a593Smuzhiyun __field(u32, ps_flags) 883*4882a593Smuzhiyun __field(unsigned long, iow_flags) 884*4882a593Smuzhiyun __field(u8, s_state) 885*4882a593Smuzhiyun __field(u8, s_num_rd) 886*4882a593Smuzhiyun __field(u8, s_retry) 887*4882a593Smuzhiyun ), 888*4882a593Smuzhiyun TP_fast_assign(/* assign */ 889*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 890*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 891*4882a593Smuzhiyun __entry->state = qp->state; 892*4882a593Smuzhiyun __entry->s_cur = qp->s_cur; 893*4882a593Smuzhiyun __entry->s_tail = qp->s_tail; 894*4882a593Smuzhiyun __entry->s_head = qp->s_head; 895*4882a593Smuzhiyun __entry->s_acked = qp->s_acked; 896*4882a593Smuzhiyun __entry->s_last = qp->s_last; 897*4882a593Smuzhiyun __entry->s_psn = qp->s_psn; 898*4882a593Smuzhiyun __entry->s_last_psn = qp->s_last_psn; 899*4882a593Smuzhiyun __entry->s_flags = qp->s_flags; 900*4882a593Smuzhiyun __entry->ps_flags = ((struct hfi1_qp_priv *)qp->priv)->s_flags; 901*4882a593Smuzhiyun __entry->iow_flags = 902*4882a593Smuzhiyun ((struct hfi1_qp_priv *)qp->priv)->s_iowait.flags; 903*4882a593Smuzhiyun __entry->s_state = qp->s_state; 904*4882a593Smuzhiyun __entry->s_num_rd = qp->s_num_rd_atomic; 905*4882a593Smuzhiyun __entry->s_retry = qp->s_retry; 906*4882a593Smuzhiyun ), 907*4882a593Smuzhiyun TP_printk(/* print */ 908*4882a593Smuzhiyun SENDER_INFO_PRN, 909*4882a593Smuzhiyun __get_str(dev), 910*4882a593Smuzhiyun __entry->qpn, 911*4882a593Smuzhiyun __entry->state, 912*4882a593Smuzhiyun __entry->s_cur, 913*4882a593Smuzhiyun __entry->s_tail, 914*4882a593Smuzhiyun __entry->s_head, 915*4882a593Smuzhiyun __entry->s_acked, 916*4882a593Smuzhiyun __entry->s_last, 917*4882a593Smuzhiyun __entry->s_psn, 918*4882a593Smuzhiyun __entry->s_last_psn, 919*4882a593Smuzhiyun __entry->s_flags, 920*4882a593Smuzhiyun __entry->ps_flags, 921*4882a593Smuzhiyun __entry->iow_flags, 922*4882a593Smuzhiyun __entry->s_state, 923*4882a593Smuzhiyun __entry->s_num_rd, 924*4882a593Smuzhiyun __entry->s_retry 925*4882a593Smuzhiyun ) 926*4882a593Smuzhiyun ); 927*4882a593Smuzhiyun 928*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 929*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_make_rc_req, 930*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 931*4882a593Smuzhiyun TP_ARGS(qp) 932*4882a593Smuzhiyun ); 933*4882a593Smuzhiyun 934*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 935*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_reset_psn, 936*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 937*4882a593Smuzhiyun TP_ARGS(qp) 938*4882a593Smuzhiyun ); 939*4882a593Smuzhiyun 940*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 941*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_restart_rc, 942*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 943*4882a593Smuzhiyun TP_ARGS(qp) 944*4882a593Smuzhiyun ); 945*4882a593Smuzhiyun 946*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 947*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_do_rc_ack, 948*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 949*4882a593Smuzhiyun TP_ARGS(qp) 950*4882a593Smuzhiyun ); 951*4882a593Smuzhiyun 952*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 953*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_rcv_tid_read_resp, 954*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 955*4882a593Smuzhiyun TP_ARGS(qp) 956*4882a593Smuzhiyun ); 957*4882a593Smuzhiyun 958*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 959*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_rcv_tid_ack, 960*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 961*4882a593Smuzhiyun TP_ARGS(qp) 962*4882a593Smuzhiyun ); 963*4882a593Smuzhiyun 964*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 965*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_make_tid_pkt, 966*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 967*4882a593Smuzhiyun TP_ARGS(qp) 968*4882a593Smuzhiyun ); 969*4882a593Smuzhiyun 970*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 971*4882a593Smuzhiyun hfi1_sender_info_template, hfi1_sender_read_kdeth_eflags, 972*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 973*4882a593Smuzhiyun TP_ARGS(qp) 974*4882a593Smuzhiyun ); 975*4882a593Smuzhiyun 976*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_read_sender */ 977*4882a593Smuzhiyun hfi1_tid_read_sender_template, 978*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 979*4882a593Smuzhiyun TP_ARGS(qp, newreq), 980*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 981*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 982*4882a593Smuzhiyun __field(u32, qpn) 983*4882a593Smuzhiyun __field(char, newreq) 984*4882a593Smuzhiyun __field(u32, tid_r_reqs) 985*4882a593Smuzhiyun __field(u32, tid_r_comp) 986*4882a593Smuzhiyun __field(u32, pending_tid_r_segs) 987*4882a593Smuzhiyun __field(u32, s_flags) 988*4882a593Smuzhiyun __field(u32, ps_flags) 989*4882a593Smuzhiyun __field(unsigned long, iow_flags) 990*4882a593Smuzhiyun __field(u8, s_state) 991*4882a593Smuzhiyun __field(u32, hw_flow_index) 992*4882a593Smuzhiyun __field(u32, generation) 993*4882a593Smuzhiyun __field(u32, fpsn) 994*4882a593Smuzhiyun ), 995*4882a593Smuzhiyun TP_fast_assign(/* assign */ 996*4882a593Smuzhiyun struct hfi1_qp_priv *priv = qp->priv; 997*4882a593Smuzhiyun 998*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 999*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1000*4882a593Smuzhiyun __entry->newreq = newreq; 1001*4882a593Smuzhiyun __entry->tid_r_reqs = priv->tid_r_reqs; 1002*4882a593Smuzhiyun __entry->tid_r_comp = priv->tid_r_comp; 1003*4882a593Smuzhiyun __entry->pending_tid_r_segs = priv->pending_tid_r_segs; 1004*4882a593Smuzhiyun __entry->s_flags = qp->s_flags; 1005*4882a593Smuzhiyun __entry->ps_flags = priv->s_flags; 1006*4882a593Smuzhiyun __entry->iow_flags = priv->s_iowait.flags; 1007*4882a593Smuzhiyun __entry->s_state = priv->s_state; 1008*4882a593Smuzhiyun __entry->hw_flow_index = priv->flow_state.index; 1009*4882a593Smuzhiyun __entry->generation = priv->flow_state.generation; 1010*4882a593Smuzhiyun __entry->fpsn = priv->flow_state.psn; 1011*4882a593Smuzhiyun ), 1012*4882a593Smuzhiyun TP_printk(/* print */ 1013*4882a593Smuzhiyun TID_READ_SENDER_PRN, 1014*4882a593Smuzhiyun __get_str(dev), 1015*4882a593Smuzhiyun __entry->qpn, 1016*4882a593Smuzhiyun __entry->newreq, 1017*4882a593Smuzhiyun __entry->tid_r_reqs, 1018*4882a593Smuzhiyun __entry->tid_r_comp, 1019*4882a593Smuzhiyun __entry->pending_tid_r_segs, 1020*4882a593Smuzhiyun __entry->s_flags, 1021*4882a593Smuzhiyun __entry->ps_flags, 1022*4882a593Smuzhiyun __entry->iow_flags, 1023*4882a593Smuzhiyun __entry->s_state, 1024*4882a593Smuzhiyun __entry->hw_flow_index, 1025*4882a593Smuzhiyun __entry->generation, 1026*4882a593Smuzhiyun __entry->fpsn 1027*4882a593Smuzhiyun ) 1028*4882a593Smuzhiyun ); 1029*4882a593Smuzhiyun 1030*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1031*4882a593Smuzhiyun hfi1_tid_read_sender_template, hfi1_tid_read_sender_make_req, 1032*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1033*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1034*4882a593Smuzhiyun ); 1035*4882a593Smuzhiyun 1036*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1037*4882a593Smuzhiyun hfi1_tid_read_sender_template, hfi1_tid_read_sender_kdeth_eflags, 1038*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1039*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1040*4882a593Smuzhiyun ); 1041*4882a593Smuzhiyun 1042*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_rdma_request */ 1043*4882a593Smuzhiyun hfi1_tid_rdma_request_template, 1044*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1045*4882a593Smuzhiyun struct tid_rdma_request *req), 1046*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req), 1047*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1048*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1049*4882a593Smuzhiyun __field(u32, qpn) 1050*4882a593Smuzhiyun __field(char, newreq) 1051*4882a593Smuzhiyun __field(u8, opcode) 1052*4882a593Smuzhiyun __field(u32, psn) 1053*4882a593Smuzhiyun __field(u32, lpsn) 1054*4882a593Smuzhiyun __field(u32, cur_seg) 1055*4882a593Smuzhiyun __field(u32, comp_seg) 1056*4882a593Smuzhiyun __field(u32, ack_seg) 1057*4882a593Smuzhiyun __field(u32, alloc_seg) 1058*4882a593Smuzhiyun __field(u32, total_segs) 1059*4882a593Smuzhiyun __field(u16, setup_head) 1060*4882a593Smuzhiyun __field(u16, clear_tail) 1061*4882a593Smuzhiyun __field(u16, flow_idx) 1062*4882a593Smuzhiyun __field(u16, acked_tail) 1063*4882a593Smuzhiyun __field(u32, state) 1064*4882a593Smuzhiyun __field(u32, r_ack_psn) 1065*4882a593Smuzhiyun __field(u32, r_flow_psn) 1066*4882a593Smuzhiyun __field(u32, r_last_acked) 1067*4882a593Smuzhiyun __field(u32, s_next_psn) 1068*4882a593Smuzhiyun ), 1069*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1070*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 1071*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1072*4882a593Smuzhiyun __entry->newreq = newreq; 1073*4882a593Smuzhiyun __entry->opcode = opcode; 1074*4882a593Smuzhiyun __entry->psn = psn; 1075*4882a593Smuzhiyun __entry->lpsn = lpsn; 1076*4882a593Smuzhiyun __entry->cur_seg = req->cur_seg; 1077*4882a593Smuzhiyun __entry->comp_seg = req->comp_seg; 1078*4882a593Smuzhiyun __entry->ack_seg = req->ack_seg; 1079*4882a593Smuzhiyun __entry->alloc_seg = req->alloc_seg; 1080*4882a593Smuzhiyun __entry->total_segs = req->total_segs; 1081*4882a593Smuzhiyun __entry->setup_head = req->setup_head; 1082*4882a593Smuzhiyun __entry->clear_tail = req->clear_tail; 1083*4882a593Smuzhiyun __entry->flow_idx = req->flow_idx; 1084*4882a593Smuzhiyun __entry->acked_tail = req->acked_tail; 1085*4882a593Smuzhiyun __entry->state = req->state; 1086*4882a593Smuzhiyun __entry->r_ack_psn = req->r_ack_psn; 1087*4882a593Smuzhiyun __entry->r_flow_psn = req->r_flow_psn; 1088*4882a593Smuzhiyun __entry->r_last_acked = req->r_last_acked; 1089*4882a593Smuzhiyun __entry->s_next_psn = req->s_next_psn; 1090*4882a593Smuzhiyun ), 1091*4882a593Smuzhiyun TP_printk(/* print */ 1092*4882a593Smuzhiyun TID_REQ_PRN, 1093*4882a593Smuzhiyun __get_str(dev), 1094*4882a593Smuzhiyun __entry->qpn, 1095*4882a593Smuzhiyun __entry->newreq, 1096*4882a593Smuzhiyun __entry->opcode, 1097*4882a593Smuzhiyun __entry->psn, 1098*4882a593Smuzhiyun __entry->lpsn, 1099*4882a593Smuzhiyun __entry->cur_seg, 1100*4882a593Smuzhiyun __entry->comp_seg, 1101*4882a593Smuzhiyun __entry->ack_seg, 1102*4882a593Smuzhiyun __entry->alloc_seg, 1103*4882a593Smuzhiyun __entry->total_segs, 1104*4882a593Smuzhiyun __entry->setup_head, 1105*4882a593Smuzhiyun __entry->clear_tail, 1106*4882a593Smuzhiyun __entry->flow_idx, 1107*4882a593Smuzhiyun __entry->acked_tail, 1108*4882a593Smuzhiyun __entry->state, 1109*4882a593Smuzhiyun __entry->r_ack_psn, 1110*4882a593Smuzhiyun __entry->r_flow_psn, 1111*4882a593Smuzhiyun __entry->r_last_acked, 1112*4882a593Smuzhiyun __entry->s_next_psn 1113*4882a593Smuzhiyun ) 1114*4882a593Smuzhiyun ); 1115*4882a593Smuzhiyun 1116*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1117*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_make_req_read, 1118*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1119*4882a593Smuzhiyun struct tid_rdma_request *req), 1120*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1121*4882a593Smuzhiyun ); 1122*4882a593Smuzhiyun 1123*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1124*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_build_read_req, 1125*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1126*4882a593Smuzhiyun struct tid_rdma_request *req), 1127*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1128*4882a593Smuzhiyun ); 1129*4882a593Smuzhiyun 1130*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1131*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_read_req, 1132*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1133*4882a593Smuzhiyun struct tid_rdma_request *req), 1134*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1135*4882a593Smuzhiyun ); 1136*4882a593Smuzhiyun 1137*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1138*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_read_resp, 1139*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1140*4882a593Smuzhiyun struct tid_rdma_request *req), 1141*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1142*4882a593Smuzhiyun ); 1143*4882a593Smuzhiyun 1144*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1145*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_err, 1146*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1147*4882a593Smuzhiyun struct tid_rdma_request *req), 1148*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1149*4882a593Smuzhiyun ); 1150*4882a593Smuzhiyun 1151*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1152*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_restart_req, 1153*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1154*4882a593Smuzhiyun struct tid_rdma_request *req), 1155*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1156*4882a593Smuzhiyun ); 1157*4882a593Smuzhiyun 1158*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1159*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_setup_tid_wqe, 1160*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1161*4882a593Smuzhiyun struct tid_rdma_request *req), 1162*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1163*4882a593Smuzhiyun ); 1164*4882a593Smuzhiyun 1165*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1166*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_write_alloc_res, 1167*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1168*4882a593Smuzhiyun struct tid_rdma_request *req), 1169*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1170*4882a593Smuzhiyun ); 1171*4882a593Smuzhiyun 1172*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1173*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_write_req, 1174*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1175*4882a593Smuzhiyun struct tid_rdma_request *req), 1176*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1177*4882a593Smuzhiyun ); 1178*4882a593Smuzhiyun 1179*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1180*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_build_write_resp, 1181*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1182*4882a593Smuzhiyun struct tid_rdma_request *req), 1183*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1184*4882a593Smuzhiyun ); 1185*4882a593Smuzhiyun 1186*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1187*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_write_resp, 1188*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1189*4882a593Smuzhiyun struct tid_rdma_request *req), 1190*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1191*4882a593Smuzhiyun ); 1192*4882a593Smuzhiyun 1193*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1194*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_write_data, 1195*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1196*4882a593Smuzhiyun struct tid_rdma_request *req), 1197*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1198*4882a593Smuzhiyun ); 1199*4882a593Smuzhiyun 1200*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1201*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_tid_ack, 1202*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1203*4882a593Smuzhiyun struct tid_rdma_request *req), 1204*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1205*4882a593Smuzhiyun ); 1206*4882a593Smuzhiyun 1207*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1208*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_tid_retry_timeout, 1209*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1210*4882a593Smuzhiyun struct tid_rdma_request *req), 1211*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1212*4882a593Smuzhiyun ); 1213*4882a593Smuzhiyun 1214*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1215*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_rcv_resync, 1216*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1217*4882a593Smuzhiyun struct tid_rdma_request *req), 1218*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1219*4882a593Smuzhiyun ); 1220*4882a593Smuzhiyun 1221*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1222*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_make_tid_pkt, 1223*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1224*4882a593Smuzhiyun struct tid_rdma_request *req), 1225*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1226*4882a593Smuzhiyun ); 1227*4882a593Smuzhiyun 1228*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1229*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_make_tid_ack, 1230*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1231*4882a593Smuzhiyun struct tid_rdma_request *req), 1232*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1233*4882a593Smuzhiyun ); 1234*4882a593Smuzhiyun 1235*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1236*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_handle_kdeth_eflags, 1237*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1238*4882a593Smuzhiyun struct tid_rdma_request *req), 1239*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1240*4882a593Smuzhiyun ); 1241*4882a593Smuzhiyun 1242*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1243*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_read_kdeth_eflags, 1244*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1245*4882a593Smuzhiyun struct tid_rdma_request *req), 1246*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1247*4882a593Smuzhiyun ); 1248*4882a593Smuzhiyun 1249*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1250*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_make_rc_ack_write, 1251*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1252*4882a593Smuzhiyun struct tid_rdma_request *req), 1253*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1254*4882a593Smuzhiyun ); 1255*4882a593Smuzhiyun 1256*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1257*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_make_req_write, 1258*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1259*4882a593Smuzhiyun struct tid_rdma_request *req), 1260*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1261*4882a593Smuzhiyun ); 1262*4882a593Smuzhiyun 1263*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1264*4882a593Smuzhiyun hfi1_tid_rdma_request_template, hfi1_tid_req_update_num_rd_atomic, 1265*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq, u8 opcode, u32 psn, u32 lpsn, 1266*4882a593Smuzhiyun struct tid_rdma_request *req), 1267*4882a593Smuzhiyun TP_ARGS(qp, newreq, opcode, psn, lpsn, req) 1268*4882a593Smuzhiyun ); 1269*4882a593Smuzhiyun 1270*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* rc_rcv_err */ 1271*4882a593Smuzhiyun hfi1_rc_rcv_err_template, 1272*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 opcode, u32 psn, int diff), 1273*4882a593Smuzhiyun TP_ARGS(qp, opcode, psn, diff), 1274*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1275*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1276*4882a593Smuzhiyun __field(u32, qpn) 1277*4882a593Smuzhiyun __field(u32, s_flags) 1278*4882a593Smuzhiyun __field(u8, state) 1279*4882a593Smuzhiyun __field(u8, s_acked_ack_queue) 1280*4882a593Smuzhiyun __field(u8, s_tail_ack_queue) 1281*4882a593Smuzhiyun __field(u8, r_head_ack_queue) 1282*4882a593Smuzhiyun __field(u32, opcode) 1283*4882a593Smuzhiyun __field(u32, psn) 1284*4882a593Smuzhiyun __field(u32, r_psn) 1285*4882a593Smuzhiyun __field(int, diff) 1286*4882a593Smuzhiyun ), 1287*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1288*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 1289*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1290*4882a593Smuzhiyun __entry->s_flags = qp->s_flags; 1291*4882a593Smuzhiyun __entry->state = qp->state; 1292*4882a593Smuzhiyun __entry->s_acked_ack_queue = qp->s_acked_ack_queue; 1293*4882a593Smuzhiyun __entry->s_tail_ack_queue = qp->s_tail_ack_queue; 1294*4882a593Smuzhiyun __entry->r_head_ack_queue = qp->r_head_ack_queue; 1295*4882a593Smuzhiyun __entry->opcode = opcode; 1296*4882a593Smuzhiyun __entry->psn = psn; 1297*4882a593Smuzhiyun __entry->r_psn = qp->r_psn; 1298*4882a593Smuzhiyun __entry->diff = diff; 1299*4882a593Smuzhiyun ), 1300*4882a593Smuzhiyun TP_printk(/* print */ 1301*4882a593Smuzhiyun RCV_ERR_PRN, 1302*4882a593Smuzhiyun __get_str(dev), 1303*4882a593Smuzhiyun __entry->qpn, 1304*4882a593Smuzhiyun __entry->s_flags, 1305*4882a593Smuzhiyun __entry->state, 1306*4882a593Smuzhiyun __entry->s_acked_ack_queue, 1307*4882a593Smuzhiyun __entry->s_tail_ack_queue, 1308*4882a593Smuzhiyun __entry->r_head_ack_queue, 1309*4882a593Smuzhiyun __entry->opcode, 1310*4882a593Smuzhiyun __entry->psn, 1311*4882a593Smuzhiyun __entry->r_psn, 1312*4882a593Smuzhiyun __entry->diff 1313*4882a593Smuzhiyun ) 1314*4882a593Smuzhiyun ); 1315*4882a593Smuzhiyun 1316*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1317*4882a593Smuzhiyun hfi1_rc_rcv_err_template, hfi1_tid_rdma_rcv_err, 1318*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 opcode, u32 psn, int diff), 1319*4882a593Smuzhiyun TP_ARGS(qp, opcode, psn, diff) 1320*4882a593Smuzhiyun ); 1321*4882a593Smuzhiyun 1322*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* sge */ 1323*4882a593Smuzhiyun hfi1_sge_template, 1324*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct rvt_sge *sge), 1325*4882a593Smuzhiyun TP_ARGS(qp, index, sge), 1326*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1327*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1328*4882a593Smuzhiyun __field(u32, qpn) 1329*4882a593Smuzhiyun __field(int, index) 1330*4882a593Smuzhiyun __field(u64, vaddr) 1331*4882a593Smuzhiyun __field(u32, sge_length) 1332*4882a593Smuzhiyun ), 1333*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1334*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 1335*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1336*4882a593Smuzhiyun __entry->index = index; 1337*4882a593Smuzhiyun __entry->vaddr = (u64)sge->vaddr; 1338*4882a593Smuzhiyun __entry->sge_length = sge->sge_length; 1339*4882a593Smuzhiyun ), 1340*4882a593Smuzhiyun TP_printk(/* print */ 1341*4882a593Smuzhiyun "[%s] qpn 0x%x sge %d: vaddr 0x%llx sge_length %u", 1342*4882a593Smuzhiyun __get_str(dev), 1343*4882a593Smuzhiyun __entry->qpn, 1344*4882a593Smuzhiyun __entry->index, 1345*4882a593Smuzhiyun __entry->vaddr, 1346*4882a593Smuzhiyun __entry->sge_length 1347*4882a593Smuzhiyun ) 1348*4882a593Smuzhiyun ); 1349*4882a593Smuzhiyun 1350*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1351*4882a593Smuzhiyun hfi1_sge_template, hfi1_sge_check_align, 1352*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, int index, struct rvt_sge *sge), 1353*4882a593Smuzhiyun TP_ARGS(qp, index, sge) 1354*4882a593Smuzhiyun ); 1355*4882a593Smuzhiyun 1356*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_write_sp */ 1357*4882a593Smuzhiyun hfi1_tid_write_rsp_template, 1358*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1359*4882a593Smuzhiyun TP_ARGS(qp), 1360*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1361*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1362*4882a593Smuzhiyun __field(u32, qpn) 1363*4882a593Smuzhiyun __field(u32, r_tid_head) 1364*4882a593Smuzhiyun __field(u32, r_tid_tail) 1365*4882a593Smuzhiyun __field(u32, r_tid_ack) 1366*4882a593Smuzhiyun __field(u32, r_tid_alloc) 1367*4882a593Smuzhiyun __field(u32, alloc_w_segs) 1368*4882a593Smuzhiyun __field(u32, pending_tid_w_segs) 1369*4882a593Smuzhiyun __field(bool, sync_pt) 1370*4882a593Smuzhiyun __field(u32, ps_nak_psn) 1371*4882a593Smuzhiyun __field(u8, ps_nak_state) 1372*4882a593Smuzhiyun __field(u8, prnr_nak_state) 1373*4882a593Smuzhiyun __field(u32, hw_flow_index) 1374*4882a593Smuzhiyun __field(u32, generation) 1375*4882a593Smuzhiyun __field(u32, fpsn) 1376*4882a593Smuzhiyun __field(bool, resync) 1377*4882a593Smuzhiyun __field(u32, r_next_psn_kdeth) 1378*4882a593Smuzhiyun ), 1379*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1380*4882a593Smuzhiyun struct hfi1_qp_priv *priv = qp->priv; 1381*4882a593Smuzhiyun 1382*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 1383*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1384*4882a593Smuzhiyun __entry->r_tid_head = priv->r_tid_head; 1385*4882a593Smuzhiyun __entry->r_tid_tail = priv->r_tid_tail; 1386*4882a593Smuzhiyun __entry->r_tid_ack = priv->r_tid_ack; 1387*4882a593Smuzhiyun __entry->r_tid_alloc = priv->r_tid_alloc; 1388*4882a593Smuzhiyun __entry->alloc_w_segs = priv->alloc_w_segs; 1389*4882a593Smuzhiyun __entry->pending_tid_w_segs = priv->pending_tid_w_segs; 1390*4882a593Smuzhiyun __entry->sync_pt = priv->sync_pt; 1391*4882a593Smuzhiyun __entry->ps_nak_psn = priv->s_nak_psn; 1392*4882a593Smuzhiyun __entry->ps_nak_state = priv->s_nak_state; 1393*4882a593Smuzhiyun __entry->prnr_nak_state = priv->rnr_nak_state; 1394*4882a593Smuzhiyun __entry->hw_flow_index = priv->flow_state.index; 1395*4882a593Smuzhiyun __entry->generation = priv->flow_state.generation; 1396*4882a593Smuzhiyun __entry->fpsn = priv->flow_state.psn; 1397*4882a593Smuzhiyun __entry->resync = priv->resync; 1398*4882a593Smuzhiyun __entry->r_next_psn_kdeth = priv->r_next_psn_kdeth; 1399*4882a593Smuzhiyun ), 1400*4882a593Smuzhiyun TP_printk(/* print */ 1401*4882a593Smuzhiyun TID_WRITE_RSPDR_PRN, 1402*4882a593Smuzhiyun __get_str(dev), 1403*4882a593Smuzhiyun __entry->qpn, 1404*4882a593Smuzhiyun __entry->r_tid_head, 1405*4882a593Smuzhiyun __entry->r_tid_tail, 1406*4882a593Smuzhiyun __entry->r_tid_ack, 1407*4882a593Smuzhiyun __entry->r_tid_alloc, 1408*4882a593Smuzhiyun __entry->alloc_w_segs, 1409*4882a593Smuzhiyun __entry->pending_tid_w_segs, 1410*4882a593Smuzhiyun __entry->sync_pt ? "yes" : "no", 1411*4882a593Smuzhiyun __entry->ps_nak_psn, 1412*4882a593Smuzhiyun __entry->ps_nak_state, 1413*4882a593Smuzhiyun __entry->prnr_nak_state, 1414*4882a593Smuzhiyun __entry->hw_flow_index, 1415*4882a593Smuzhiyun __entry->generation, 1416*4882a593Smuzhiyun __entry->fpsn, 1417*4882a593Smuzhiyun __entry->resync ? "yes" : "no", 1418*4882a593Smuzhiyun __entry->r_next_psn_kdeth 1419*4882a593Smuzhiyun ) 1420*4882a593Smuzhiyun ); 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1423*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_alloc_res, 1424*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1425*4882a593Smuzhiyun TP_ARGS(qp) 1426*4882a593Smuzhiyun ); 1427*4882a593Smuzhiyun 1428*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1429*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_rcv_req, 1430*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1431*4882a593Smuzhiyun TP_ARGS(qp) 1432*4882a593Smuzhiyun ); 1433*4882a593Smuzhiyun 1434*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1435*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_build_resp, 1436*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1437*4882a593Smuzhiyun TP_ARGS(qp) 1438*4882a593Smuzhiyun ); 1439*4882a593Smuzhiyun 1440*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1441*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_rcv_data, 1442*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1443*4882a593Smuzhiyun TP_ARGS(qp) 1444*4882a593Smuzhiyun ); 1445*4882a593Smuzhiyun 1446*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1447*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_rcv_resync, 1448*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1449*4882a593Smuzhiyun TP_ARGS(qp) 1450*4882a593Smuzhiyun ); 1451*4882a593Smuzhiyun 1452*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1453*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_make_tid_ack, 1454*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1455*4882a593Smuzhiyun TP_ARGS(qp) 1456*4882a593Smuzhiyun ); 1457*4882a593Smuzhiyun 1458*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1459*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_handle_kdeth_eflags, 1460*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1461*4882a593Smuzhiyun TP_ARGS(qp) 1462*4882a593Smuzhiyun ); 1463*4882a593Smuzhiyun 1464*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1465*4882a593Smuzhiyun hfi1_tid_write_rsp_template, hfi1_tid_write_rsp_make_rc_ack, 1466*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp), 1467*4882a593Smuzhiyun TP_ARGS(qp) 1468*4882a593Smuzhiyun ); 1469*4882a593Smuzhiyun 1470*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_write_sender */ 1471*4882a593Smuzhiyun hfi1_tid_write_sender_template, 1472*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1473*4882a593Smuzhiyun TP_ARGS(qp, newreq), 1474*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1475*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1476*4882a593Smuzhiyun __field(u32, qpn) 1477*4882a593Smuzhiyun __field(char, newreq) 1478*4882a593Smuzhiyun __field(u32, s_tid_cur) 1479*4882a593Smuzhiyun __field(u32, s_tid_tail) 1480*4882a593Smuzhiyun __field(u32, s_tid_head) 1481*4882a593Smuzhiyun __field(u32, pending_tid_w_resp) 1482*4882a593Smuzhiyun __field(u32, n_requests) 1483*4882a593Smuzhiyun __field(u32, n_tid_requests) 1484*4882a593Smuzhiyun __field(u32, s_flags) 1485*4882a593Smuzhiyun __field(u32, ps_flags) 1486*4882a593Smuzhiyun __field(unsigned long, iow_flags) 1487*4882a593Smuzhiyun __field(u8, s_state) 1488*4882a593Smuzhiyun __field(u8, s_retry) 1489*4882a593Smuzhiyun ), 1490*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1491*4882a593Smuzhiyun struct hfi1_qp_priv *priv = qp->priv; 1492*4882a593Smuzhiyun 1493*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 1494*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1495*4882a593Smuzhiyun __entry->newreq = newreq; 1496*4882a593Smuzhiyun __entry->s_tid_cur = priv->s_tid_cur; 1497*4882a593Smuzhiyun __entry->s_tid_tail = priv->s_tid_tail; 1498*4882a593Smuzhiyun __entry->s_tid_head = priv->s_tid_head; 1499*4882a593Smuzhiyun __entry->pending_tid_w_resp = priv->pending_tid_w_resp; 1500*4882a593Smuzhiyun __entry->n_requests = atomic_read(&priv->n_requests); 1501*4882a593Smuzhiyun __entry->n_tid_requests = atomic_read(&priv->n_tid_requests); 1502*4882a593Smuzhiyun __entry->s_flags = qp->s_flags; 1503*4882a593Smuzhiyun __entry->ps_flags = priv->s_flags; 1504*4882a593Smuzhiyun __entry->iow_flags = priv->s_iowait.flags; 1505*4882a593Smuzhiyun __entry->s_state = priv->s_state; 1506*4882a593Smuzhiyun __entry->s_retry = priv->s_retry; 1507*4882a593Smuzhiyun ), 1508*4882a593Smuzhiyun TP_printk(/* print */ 1509*4882a593Smuzhiyun TID_WRITE_SENDER_PRN, 1510*4882a593Smuzhiyun __get_str(dev), 1511*4882a593Smuzhiyun __entry->qpn, 1512*4882a593Smuzhiyun __entry->newreq, 1513*4882a593Smuzhiyun __entry->s_tid_cur, 1514*4882a593Smuzhiyun __entry->s_tid_tail, 1515*4882a593Smuzhiyun __entry->s_tid_head, 1516*4882a593Smuzhiyun __entry->pending_tid_w_resp, 1517*4882a593Smuzhiyun __entry->n_requests, 1518*4882a593Smuzhiyun __entry->n_tid_requests, 1519*4882a593Smuzhiyun __entry->s_flags, 1520*4882a593Smuzhiyun __entry->ps_flags, 1521*4882a593Smuzhiyun __entry->iow_flags, 1522*4882a593Smuzhiyun __entry->s_state, 1523*4882a593Smuzhiyun __entry->s_retry 1524*4882a593Smuzhiyun ) 1525*4882a593Smuzhiyun ); 1526*4882a593Smuzhiyun 1527*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1528*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_rcv_resp, 1529*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1530*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1531*4882a593Smuzhiyun ); 1532*4882a593Smuzhiyun 1533*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1534*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_rcv_tid_ack, 1535*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1536*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1537*4882a593Smuzhiyun ); 1538*4882a593Smuzhiyun 1539*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1540*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_retry_timeout, 1541*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1542*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1543*4882a593Smuzhiyun ); 1544*4882a593Smuzhiyun 1545*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1546*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_make_tid_pkt, 1547*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1548*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1549*4882a593Smuzhiyun ); 1550*4882a593Smuzhiyun 1551*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1552*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_make_req, 1553*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1554*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1555*4882a593Smuzhiyun ); 1556*4882a593Smuzhiyun 1557*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1558*4882a593Smuzhiyun hfi1_tid_write_sender_template, hfi1_tid_write_sender_restart_rc, 1559*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, char newreq), 1560*4882a593Smuzhiyun TP_ARGS(qp, newreq) 1561*4882a593Smuzhiyun ); 1562*4882a593Smuzhiyun 1563*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* tid_ack */ 1564*4882a593Smuzhiyun hfi1_tid_ack_template, 1565*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 1566*4882a593Smuzhiyun u32 req_psn, u32 resync_psn), 1567*4882a593Smuzhiyun TP_ARGS(qp, aeth, psn, req_psn, resync_psn), 1568*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1569*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1570*4882a593Smuzhiyun __field(u32, qpn) 1571*4882a593Smuzhiyun __field(u32, aeth) 1572*4882a593Smuzhiyun __field(u32, psn) 1573*4882a593Smuzhiyun __field(u32, req_psn) 1574*4882a593Smuzhiyun __field(u32, resync_psn) 1575*4882a593Smuzhiyun ), 1576*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1577*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)) 1578*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1579*4882a593Smuzhiyun __entry->aeth = aeth; 1580*4882a593Smuzhiyun __entry->psn = psn; 1581*4882a593Smuzhiyun __entry->req_psn = req_psn; 1582*4882a593Smuzhiyun __entry->resync_psn = resync_psn; 1583*4882a593Smuzhiyun ), 1584*4882a593Smuzhiyun TP_printk(/* print */ 1585*4882a593Smuzhiyun "[%s] qpn 0x%x aeth 0x%x psn 0x%x req_psn 0x%x resync_psn 0x%x", 1586*4882a593Smuzhiyun __get_str(dev), 1587*4882a593Smuzhiyun __entry->qpn, 1588*4882a593Smuzhiyun __entry->aeth, 1589*4882a593Smuzhiyun __entry->psn, 1590*4882a593Smuzhiyun __entry->req_psn, 1591*4882a593Smuzhiyun __entry->resync_psn 1592*4882a593Smuzhiyun ) 1593*4882a593Smuzhiyun ); 1594*4882a593Smuzhiyun 1595*4882a593Smuzhiyun DEFINE_EVENT(/* rcv_tid_ack */ 1596*4882a593Smuzhiyun hfi1_tid_ack_template, hfi1_rcv_tid_ack, 1597*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn, 1598*4882a593Smuzhiyun u32 req_psn, u32 resync_psn), 1599*4882a593Smuzhiyun TP_ARGS(qp, aeth, psn, req_psn, resync_psn) 1600*4882a593Smuzhiyun ); 1601*4882a593Smuzhiyun 1602*4882a593Smuzhiyun DECLARE_EVENT_CLASS(/* kdeth_eflags_error */ 1603*4882a593Smuzhiyun hfi1_kdeth_eflags_error_template, 1604*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 rcv_type, u8 rte, u32 psn), 1605*4882a593Smuzhiyun TP_ARGS(qp, rcv_type, rte, psn), 1606*4882a593Smuzhiyun TP_STRUCT__entry(/* entry */ 1607*4882a593Smuzhiyun DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 1608*4882a593Smuzhiyun __field(u32, qpn) 1609*4882a593Smuzhiyun __field(u8, rcv_type) 1610*4882a593Smuzhiyun __field(u8, rte) 1611*4882a593Smuzhiyun __field(u32, psn) 1612*4882a593Smuzhiyun ), 1613*4882a593Smuzhiyun TP_fast_assign(/* assign */ 1614*4882a593Smuzhiyun DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 1615*4882a593Smuzhiyun __entry->qpn = qp->ibqp.qp_num; 1616*4882a593Smuzhiyun __entry->rcv_type = rcv_type; 1617*4882a593Smuzhiyun __entry->rte = rte; 1618*4882a593Smuzhiyun __entry->psn = psn; 1619*4882a593Smuzhiyun ), 1620*4882a593Smuzhiyun TP_printk(/* print */ 1621*4882a593Smuzhiyun KDETH_EFLAGS_ERR_PRN, 1622*4882a593Smuzhiyun __get_str(dev), 1623*4882a593Smuzhiyun __entry->qpn, 1624*4882a593Smuzhiyun __entry->rcv_type, 1625*4882a593Smuzhiyun __entry->rte, 1626*4882a593Smuzhiyun __entry->psn 1627*4882a593Smuzhiyun ) 1628*4882a593Smuzhiyun ); 1629*4882a593Smuzhiyun 1630*4882a593Smuzhiyun DEFINE_EVENT(/* event */ 1631*4882a593Smuzhiyun hfi1_kdeth_eflags_error_template, hfi1_eflags_err_write, 1632*4882a593Smuzhiyun TP_PROTO(struct rvt_qp *qp, u8 rcv_type, u8 rte, u32 psn), 1633*4882a593Smuzhiyun TP_ARGS(qp, rcv_type, rte, psn) 1634*4882a593Smuzhiyun ); 1635*4882a593Smuzhiyun 1636*4882a593Smuzhiyun #endif /* __HFI1_TRACE_TID_H */ 1637*4882a593Smuzhiyun 1638*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 1639*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 1640*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 1641*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace_tid 1642*4882a593Smuzhiyun #include <trace/define_trace.h> 1643