GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / infiniband / sw / rdmavt / trace_qp.h
1 /* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
2 /*
3  * Copyright(c) 2016 Intel Corporation.
4  */
5 #if !defined(__RVT_TRACE_QP_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define __RVT_TRACE_QP_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_qp
16
17 DECLARE_EVENT_CLASS(rvt_qphash_template,
18         TP_PROTO(struct rvt_qp *qp, u32 bucket),
19         TP_ARGS(qp, bucket),
20         TP_STRUCT__entry(
21                 RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device))
22                 __field(u32, qpn)
23                 __field(u32, bucket)
24         ),
25         TP_fast_assign(
26                 RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device));
27                 __entry->qpn = qp->ibqp.qp_num;
28                 __entry->bucket = bucket;
29         ),
30         TP_printk(
31                 "[%s] qpn 0x%x bucket %u",
32                 __get_str(dev),
33                 __entry->qpn,
34                 __entry->bucket
35         )
36 );
37
38 DEFINE_EVENT(rvt_qphash_template, rvt_qpinsert,
39         TP_PROTO(struct rvt_qp *qp, u32 bucket),
40         TP_ARGS(qp, bucket));
41
42 DEFINE_EVENT(rvt_qphash_template, rvt_qpremove,
43         TP_PROTO(struct rvt_qp *qp, u32 bucket),
44         TP_ARGS(qp, bucket));
45
46 DECLARE_EVENT_CLASS(
47         rvt_rnrnak_template,
48         TP_PROTO(struct rvt_qp *qp, u32 to),
49         TP_ARGS(qp, to),
50         TP_STRUCT__entry(
51                 RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device))
52                 __field(u32, qpn)
53                 __field(void *, hrtimer)
54                 __field(u32, s_flags)
55                 __field(u32, to)
56         ),
57         TP_fast_assign(
58                 RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device));
59                 __entry->qpn = qp->ibqp.qp_num;
60                 __entry->hrtimer = &qp->s_rnr_timer;
61                 __entry->s_flags = qp->s_flags;
62                 __entry->to = to;
63         ),
64         TP_printk(
65                 "[%s] qpn 0x%x hrtimer 0x%p s_flags 0x%x timeout %u us",
66                 __get_str(dev),
67                 __entry->qpn,
68                 __entry->hrtimer,
69                 __entry->s_flags,
70                 __entry->to
71         )
72 );
73
74 DEFINE_EVENT(
75         rvt_rnrnak_template, rvt_rnrnak_add,
76         TP_PROTO(struct rvt_qp *qp, u32 to),
77         TP_ARGS(qp, to));
78
79 DEFINE_EVENT(
80         rvt_rnrnak_template, rvt_rnrnak_timeout,
81         TP_PROTO(struct rvt_qp *qp, u32 to),
82         TP_ARGS(qp, to));
83
84 DEFINE_EVENT(
85         rvt_rnrnak_template, rvt_rnrnak_stop,
86         TP_PROTO(struct rvt_qp *qp, u32 to),
87         TP_ARGS(qp, to));
88
89 #endif /* __RVT_TRACE_QP_H */
90
91 #undef TRACE_INCLUDE_PATH
92 #undef TRACE_INCLUDE_FILE
93 #define TRACE_INCLUDE_PATH .
94 #define TRACE_INCLUDE_FILE trace_qp
95 #include <trace/define_trace.h>
96