164 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */2/*3 * Copyright(c) 2016 Intel Corporation.4 */5#if !defined(__RVT_TRACE_TX_H) || defined(TRACE_HEADER_MULTI_READ)6#define __RVT_TRACE_TX_H7 8#include <linux/tracepoint.h>9#include <linux/trace_seq.h>10 11#include <rdma/ib_verbs.h>12#include <rdma/rdmavt_qp.h>13 14#undef TRACE_SYSTEM15#define TRACE_SYSTEM rvt_tx16 17#define wr_opcode_name(opcode) { IB_WR_##opcode, #opcode }18#define show_wr_opcode(opcode) \19__print_symbolic(opcode, \20 wr_opcode_name(RDMA_WRITE), \21 wr_opcode_name(RDMA_WRITE_WITH_IMM), \22 wr_opcode_name(SEND), \23 wr_opcode_name(SEND_WITH_IMM), \24 wr_opcode_name(RDMA_READ), \25 wr_opcode_name(ATOMIC_CMP_AND_SWP), \26 wr_opcode_name(ATOMIC_FETCH_AND_ADD), \27 wr_opcode_name(LSO), \28 wr_opcode_name(SEND_WITH_INV), \29 wr_opcode_name(RDMA_READ_WITH_INV), \30 wr_opcode_name(LOCAL_INV), \31 wr_opcode_name(MASKED_ATOMIC_CMP_AND_SWP), \32 wr_opcode_name(MASKED_ATOMIC_FETCH_AND_ADD), \33 wr_opcode_name(RESERVED1), \34 wr_opcode_name(RESERVED2), \35 wr_opcode_name(RESERVED3), \36 wr_opcode_name(RESERVED4), \37 wr_opcode_name(RESERVED5), \38 wr_opcode_name(RESERVED6), \39 wr_opcode_name(RESERVED7), \40 wr_opcode_name(RESERVED8), \41 wr_opcode_name(RESERVED9), \42 wr_opcode_name(RESERVED10))43 44#define POS_PRN \45"[%s] wqe %p wr_id %llx send_flags %x qpn %x qpt %u psn %x lpsn %x ssn %x length %u opcode 0x%.2x,%s size %u avail %u head %u last %u pid %u num_sge %u wr_num_sge %u"46 47TRACE_EVENT(48 rvt_post_one_wr,49 TP_PROTO(struct rvt_qp *qp, struct rvt_swqe *wqe, int wr_num_sge),50 TP_ARGS(qp, wqe, wr_num_sge),51 TP_STRUCT__entry(52 RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device))53 __field(u64, wr_id)54 __field(struct rvt_swqe *, wqe)55 __field(u32, qpn)56 __field(u32, qpt)57 __field(u32, psn)58 __field(u32, lpsn)59 __field(u32, length)60 __field(u32, opcode)61 __field(u32, size)62 __field(u32, avail)63 __field(u32, head)64 __field(u32, last)65 __field(u32, ssn)66 __field(int, send_flags)67 __field(pid_t, pid)68 __field(int, num_sge)69 __field(int, wr_num_sge)70 ),71 TP_fast_assign(72 RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device));73 __entry->wqe = wqe;74 __entry->wr_id = wqe->wr.wr_id;75 __entry->qpn = qp->ibqp.qp_num;76 __entry->qpt = qp->ibqp.qp_type;77 __entry->psn = wqe->psn;78 __entry->lpsn = wqe->lpsn;79 __entry->length = wqe->length;80 __entry->opcode = wqe->wr.opcode;81 __entry->size = qp->s_size;82 __entry->avail = qp->s_avail;83 __entry->head = qp->s_head;84 __entry->last = qp->s_last;85 __entry->pid = qp->pid;86 __entry->ssn = wqe->ssn;87 __entry->send_flags = wqe->wr.send_flags;88 __entry->num_sge = wqe->wr.num_sge;89 __entry->wr_num_sge = wr_num_sge;90 ),91 TP_printk(92 POS_PRN,93 __get_str(dev),94 __entry->wqe,95 __entry->wr_id,96 __entry->send_flags,97 __entry->qpn,98 __entry->qpt,99 __entry->psn,100 __entry->lpsn,101 __entry->ssn,102 __entry->length,103 __entry->opcode, show_wr_opcode(__entry->opcode),104 __entry->size,105 __entry->avail,106 __entry->head,107 __entry->last,108 __entry->pid,109 __entry->num_sge,110 __entry->wr_num_sge111 )112);113 114TRACE_EVENT(115 rvt_qp_send_completion,116 TP_PROTO(struct rvt_qp *qp, struct rvt_swqe *wqe, u32 idx),117 TP_ARGS(qp, wqe, idx),118 TP_STRUCT__entry(119 RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device))120 __field(struct rvt_swqe *, wqe)121 __field(u64, wr_id)122 __field(u32, qpn)123 __field(u32, qpt)124 __field(u32, length)125 __field(u32, idx)126 __field(u32, ssn)127 __field(enum ib_wr_opcode, opcode)128 __field(int, send_flags)129 ),130 TP_fast_assign(131 RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device));132 __entry->wqe = wqe;133 __entry->wr_id = wqe->wr.wr_id;134 __entry->qpn = qp->ibqp.qp_num;135 __entry->qpt = qp->ibqp.qp_type;136 __entry->length = wqe->length;137 __entry->idx = idx;138 __entry->ssn = wqe->ssn;139 __entry->opcode = wqe->wr.opcode;140 __entry->send_flags = wqe->wr.send_flags;141 ),142 TP_printk(143 "[%s] qpn 0x%x qpt %u wqe %p idx %u wr_id %llx length %u ssn %u opcode %x send_flags %x",144 __get_str(dev),145 __entry->qpn,146 __entry->qpt,147 __entry->wqe,148 __entry->idx,149 __entry->wr_id,150 __entry->length,151 __entry->ssn,152 __entry->opcode,153 __entry->send_flags154 )155);156#endif /* __RVT_TRACE_TX_H */157 158#undef TRACE_INCLUDE_PATH159#undef TRACE_INCLUDE_FILE160#define TRACE_INCLUDE_PATH .161#define TRACE_INCLUDE_FILE trace_tx162#include <trace/define_trace.h>163 164