gpio: rcar: Fix runtime PM imbalance on error
[linux/fpc-iii.git] / drivers / infiniband / core / cma_trace.h
blob81e36bf1315929420bd913e1ab342003e9a3d3d4
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3 * Trace point definitions for the RDMA Connect Manager.
5 * Author: Chuck Lever <chuck.lever@oracle.com>
7 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
8 */
10 #undef TRACE_SYSTEM
11 #define TRACE_SYSTEM rdma_cma
13 #if !defined(_TRACE_RDMA_CMA_H) || defined(TRACE_HEADER_MULTI_READ)
15 #define _TRACE_RDMA_CMA_H
17 #include <linux/tracepoint.h>
18 #include <trace/events/rdma.h>
21 * enum ib_cm_event_type, from include/rdma/ib_cm.h
23 #define IB_CM_EVENT_LIST \
24 ib_cm_event(REQ_ERROR) \
25 ib_cm_event(REQ_RECEIVED) \
26 ib_cm_event(REP_ERROR) \
27 ib_cm_event(REP_RECEIVED) \
28 ib_cm_event(RTU_RECEIVED) \
29 ib_cm_event(USER_ESTABLISHED) \
30 ib_cm_event(DREQ_ERROR) \
31 ib_cm_event(DREQ_RECEIVED) \
32 ib_cm_event(DREP_RECEIVED) \
33 ib_cm_event(TIMEWAIT_EXIT) \
34 ib_cm_event(MRA_RECEIVED) \
35 ib_cm_event(REJ_RECEIVED) \
36 ib_cm_event(LAP_ERROR) \
37 ib_cm_event(LAP_RECEIVED) \
38 ib_cm_event(APR_RECEIVED) \
39 ib_cm_event(SIDR_REQ_ERROR) \
40 ib_cm_event(SIDR_REQ_RECEIVED) \
41 ib_cm_event_end(SIDR_REP_RECEIVED)
43 #undef ib_cm_event
44 #undef ib_cm_event_end
46 #define ib_cm_event(x) TRACE_DEFINE_ENUM(IB_CM_##x);
47 #define ib_cm_event_end(x) TRACE_DEFINE_ENUM(IB_CM_##x);
49 IB_CM_EVENT_LIST
51 #undef ib_cm_event
52 #undef ib_cm_event_end
54 #define ib_cm_event(x) { IB_CM_##x, #x },
55 #define ib_cm_event_end(x) { IB_CM_##x, #x }
57 #define rdma_show_ib_cm_event(x) \
58 __print_symbolic(x, IB_CM_EVENT_LIST)
61 DECLARE_EVENT_CLASS(cma_fsm_class,
62 TP_PROTO(
63 const struct rdma_id_private *id_priv
66 TP_ARGS(id_priv),
68 TP_STRUCT__entry(
69 __field(u32, cm_id)
70 __field(u32, tos)
71 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
72 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
75 TP_fast_assign(
76 __entry->cm_id = id_priv->res.id;
77 __entry->tos = id_priv->tos;
78 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
79 sizeof(struct sockaddr_in6));
80 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
81 sizeof(struct sockaddr_in6));
84 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u",
85 __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos
89 #define DEFINE_CMA_FSM_EVENT(name) \
90 DEFINE_EVENT(cma_fsm_class, cm_##name, \
91 TP_PROTO( \
92 const struct rdma_id_private *id_priv \
93 ), \
94 TP_ARGS(id_priv))
96 DEFINE_CMA_FSM_EVENT(send_rtu);
97 DEFINE_CMA_FSM_EVENT(send_rej);
98 DEFINE_CMA_FSM_EVENT(send_mra);
99 DEFINE_CMA_FSM_EVENT(send_sidr_req);
100 DEFINE_CMA_FSM_EVENT(send_sidr_rep);
101 DEFINE_CMA_FSM_EVENT(disconnect);
102 DEFINE_CMA_FSM_EVENT(sent_drep);
103 DEFINE_CMA_FSM_EVENT(sent_dreq);
104 DEFINE_CMA_FSM_EVENT(id_destroy);
106 TRACE_EVENT(cm_id_create,
107 TP_PROTO(
108 const struct rdma_id_private *id_priv
111 TP_ARGS(id_priv),
113 TP_STRUCT__entry(
114 __field(u32, cm_id)
117 TP_fast_assign(
118 __entry->cm_id = id_priv->res.id;
121 TP_printk("cm.id=%u",
122 __entry->cm_id
126 DECLARE_EVENT_CLASS(cma_qp_class,
127 TP_PROTO(
128 const struct rdma_id_private *id_priv
131 TP_ARGS(id_priv),
133 TP_STRUCT__entry(
134 __field(u32, cm_id)
135 __field(u32, tos)
136 __field(u32, qp_num)
137 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
138 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
141 TP_fast_assign(
142 __entry->cm_id = id_priv->res.id;
143 __entry->tos = id_priv->tos;
144 __entry->qp_num = id_priv->qp_num;
145 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
146 sizeof(struct sockaddr_in6));
147 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
148 sizeof(struct sockaddr_in6));
151 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u qp_num=%u",
152 __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
153 __entry->qp_num
157 #define DEFINE_CMA_QP_EVENT(name) \
158 DEFINE_EVENT(cma_qp_class, cm_##name, \
159 TP_PROTO( \
160 const struct rdma_id_private *id_priv \
161 ), \
162 TP_ARGS(id_priv))
164 DEFINE_CMA_QP_EVENT(send_req);
165 DEFINE_CMA_QP_EVENT(send_rep);
166 DEFINE_CMA_QP_EVENT(qp_destroy);
169 * enum ib_wp_type, from include/rdma/ib_verbs.h
171 #define IB_QP_TYPE_LIST \
172 ib_qp_type(SMI) \
173 ib_qp_type(GSI) \
174 ib_qp_type(RC) \
175 ib_qp_type(UC) \
176 ib_qp_type(UD) \
177 ib_qp_type(RAW_IPV6) \
178 ib_qp_type(RAW_ETHERTYPE) \
179 ib_qp_type(RAW_PACKET) \
180 ib_qp_type(XRC_INI) \
181 ib_qp_type_end(XRC_TGT)
183 #undef ib_qp_type
184 #undef ib_qp_type_end
186 #define ib_qp_type(x) TRACE_DEFINE_ENUM(IB_QPT_##x);
187 #define ib_qp_type_end(x) TRACE_DEFINE_ENUM(IB_QPT_##x);
189 IB_QP_TYPE_LIST
191 #undef ib_qp_type
192 #undef ib_qp_type_end
194 #define ib_qp_type(x) { IB_QPT_##x, #x },
195 #define ib_qp_type_end(x) { IB_QPT_##x, #x }
197 #define rdma_show_qp_type(x) \
198 __print_symbolic(x, IB_QP_TYPE_LIST)
201 TRACE_EVENT(cm_qp_create,
202 TP_PROTO(
203 const struct rdma_id_private *id_priv,
204 const struct ib_pd *pd,
205 const struct ib_qp_init_attr *qp_init_attr,
206 int rc
209 TP_ARGS(id_priv, pd, qp_init_attr, rc),
211 TP_STRUCT__entry(
212 __field(u32, cm_id)
213 __field(u32, pd_id)
214 __field(u32, tos)
215 __field(u32, qp_num)
216 __field(u32, send_wr)
217 __field(u32, recv_wr)
218 __field(int, rc)
219 __field(unsigned long, qp_type)
220 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
221 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
224 TP_fast_assign(
225 __entry->cm_id = id_priv->res.id;
226 __entry->pd_id = pd->res.id;
227 __entry->tos = id_priv->tos;
228 __entry->send_wr = qp_init_attr->cap.max_send_wr;
229 __entry->recv_wr = qp_init_attr->cap.max_recv_wr;
230 __entry->rc = rc;
231 if (!rc) {
232 __entry->qp_num = id_priv->qp_num;
233 __entry->qp_type = id_priv->id.qp_type;
234 } else {
235 __entry->qp_num = 0;
236 __entry->qp_type = 0;
238 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
239 sizeof(struct sockaddr_in6));
240 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
241 sizeof(struct sockaddr_in6));
244 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u pd.id=%u qp_type=%s"
245 " send_wr=%u recv_wr=%u qp_num=%u rc=%d",
246 __entry->cm_id, __entry->srcaddr, __entry->dstaddr,
247 __entry->tos, __entry->pd_id,
248 rdma_show_qp_type(__entry->qp_type), __entry->send_wr,
249 __entry->recv_wr, __entry->qp_num, __entry->rc
253 TRACE_EVENT(cm_req_handler,
254 TP_PROTO(
255 const struct rdma_id_private *id_priv,
256 int event
259 TP_ARGS(id_priv, event),
261 TP_STRUCT__entry(
262 __field(u32, cm_id)
263 __field(u32, tos)
264 __field(unsigned long, event)
265 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
266 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
269 TP_fast_assign(
270 __entry->cm_id = id_priv->res.id;
271 __entry->tos = id_priv->tos;
272 __entry->event = event;
273 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
274 sizeof(struct sockaddr_in6));
275 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
276 sizeof(struct sockaddr_in6));
279 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu)",
280 __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
281 rdma_show_ib_cm_event(__entry->event), __entry->event
285 TRACE_EVENT(cm_event_handler,
286 TP_PROTO(
287 const struct rdma_id_private *id_priv,
288 const struct rdma_cm_event *event
291 TP_ARGS(id_priv, event),
293 TP_STRUCT__entry(
294 __field(u32, cm_id)
295 __field(u32, tos)
296 __field(unsigned long, event)
297 __field(int, status)
298 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
299 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
302 TP_fast_assign(
303 __entry->cm_id = id_priv->res.id;
304 __entry->tos = id_priv->tos;
305 __entry->event = event->event;
306 __entry->status = event->status;
307 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
308 sizeof(struct sockaddr_in6));
309 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
310 sizeof(struct sockaddr_in6));
313 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu/%d)",
314 __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
315 rdma_show_cm_event(__entry->event), __entry->event,
316 __entry->status
320 TRACE_EVENT(cm_event_done,
321 TP_PROTO(
322 const struct rdma_id_private *id_priv,
323 const struct rdma_cm_event *event,
324 int result
327 TP_ARGS(id_priv, event, result),
329 TP_STRUCT__entry(
330 __field(u32, cm_id)
331 __field(u32, tos)
332 __field(unsigned long, event)
333 __field(int, result)
334 __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
335 __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
338 TP_fast_assign(
339 __entry->cm_id = id_priv->res.id;
340 __entry->tos = id_priv->tos;
341 __entry->event = event->event;
342 __entry->result = result;
343 memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
344 sizeof(struct sockaddr_in6));
345 memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
346 sizeof(struct sockaddr_in6));
349 TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s consumer returns %d",
350 __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
351 rdma_show_cm_event(__entry->event), __entry->result
355 DECLARE_EVENT_CLASS(cma_client_class,
356 TP_PROTO(
357 const struct ib_device *device
360 TP_ARGS(device),
362 TP_STRUCT__entry(
363 __string(name, device->name)
366 TP_fast_assign(
367 __assign_str(name, device->name);
370 TP_printk("device name=%s",
371 __get_str(name)
375 #define DEFINE_CMA_CLIENT_EVENT(name) \
376 DEFINE_EVENT(cma_client_class, cm_##name, \
377 TP_PROTO( \
378 const struct ib_device *device \
379 ), \
380 TP_ARGS(device))
382 DEFINE_CMA_CLIENT_EVENT(add_one);
383 DEFINE_CMA_CLIENT_EVENT(remove_one);
385 #endif /* _TRACE_RDMA_CMA_H */
387 #undef TRACE_INCLUDE_PATH
388 #define TRACE_INCLUDE_PATH .
389 #define TRACE_INCLUDE_FILE cma_trace
391 #include <trace/define_trace.h>