File Index
Files and directories
Sign in
FILE

trace_tx.h

File preview with syntax highlighting.

linux-6.19.14/drivers/infiniband/sw/rdmavt/trace_tx.h 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_H
  7
  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_SYSTEM
 15#define TRACE_SYSTEM rvt_tx
 16
 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_sge
111	)
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_flags
154	)
155);
156#endif /* __RVT_TRACE_TX_H */
157
158#undef TRACE_INCLUDE_PATH
159#undef TRACE_INCLUDE_FILE
160#define TRACE_INCLUDE_PATH .
161#define TRACE_INCLUDE_FILE trace_tx
162#include <trace/define_trace.h>
163
~/ Read-only file preview.