175874b3dSChuck Lever /* SPDX-License-Identifier: GPL-2.0-only */
275874b3dSChuck Lever /*
375874b3dSChuck Lever  * Trace point definitions for the RDMA Connect Manager.
475874b3dSChuck Lever  *
575874b3dSChuck Lever  * Author: Chuck Lever <chuck.lever@oracle.com>
675874b3dSChuck Lever  *
775874b3dSChuck Lever  * Copyright (c) 2020 Oracle and/or its affiliates.
875874b3dSChuck Lever  */
975874b3dSChuck Lever 
1075874b3dSChuck Lever #undef TRACE_SYSTEM
1175874b3dSChuck Lever #define TRACE_SYSTEM ib_cma
1275874b3dSChuck Lever 
1375874b3dSChuck Lever #if !defined(_TRACE_IB_CMA_H) || defined(TRACE_HEADER_MULTI_READ)
1475874b3dSChuck Lever 
1575874b3dSChuck Lever #define _TRACE_IB_CMA_H
1675874b3dSChuck Lever 
1775874b3dSChuck Lever #include <linux/tracepoint.h>
1875874b3dSChuck Lever #include <rdma/ib_cm.h>
19*247c01ffSChuck Lever #include <trace/misc/rdma.h>
2075874b3dSChuck Lever 
2175874b3dSChuck Lever /*
2275874b3dSChuck Lever  * enum ib_cm_state, from include/rdma/ib_cm.h
2375874b3dSChuck Lever  */
2475874b3dSChuck Lever #define IB_CM_STATE_LIST					\
2575874b3dSChuck Lever 	ib_cm_state(IDLE)					\
2675874b3dSChuck Lever 	ib_cm_state(LISTEN)					\
2775874b3dSChuck Lever 	ib_cm_state(REQ_SENT)					\
2875874b3dSChuck Lever 	ib_cm_state(REQ_RCVD)					\
2975874b3dSChuck Lever 	ib_cm_state(MRA_REQ_SENT)				\
3075874b3dSChuck Lever 	ib_cm_state(MRA_REQ_RCVD)				\
3175874b3dSChuck Lever 	ib_cm_state(REP_SENT)					\
3275874b3dSChuck Lever 	ib_cm_state(REP_RCVD)					\
3375874b3dSChuck Lever 	ib_cm_state(MRA_REP_SENT)				\
3475874b3dSChuck Lever 	ib_cm_state(MRA_REP_RCVD)				\
3575874b3dSChuck Lever 	ib_cm_state(ESTABLISHED)				\
3675874b3dSChuck Lever 	ib_cm_state(DREQ_SENT)					\
3775874b3dSChuck Lever 	ib_cm_state(DREQ_RCVD)					\
3875874b3dSChuck Lever 	ib_cm_state(TIMEWAIT)					\
3975874b3dSChuck Lever 	ib_cm_state(SIDR_REQ_SENT)				\
4075874b3dSChuck Lever 	ib_cm_state_end(SIDR_REQ_RCVD)
4175874b3dSChuck Lever 
4275874b3dSChuck Lever #undef  ib_cm_state
4375874b3dSChuck Lever #undef  ib_cm_state_end
4475874b3dSChuck Lever #define ib_cm_state(x)		TRACE_DEFINE_ENUM(IB_CM_##x);
4575874b3dSChuck Lever #define ib_cm_state_end(x)	TRACE_DEFINE_ENUM(IB_CM_##x);
4675874b3dSChuck Lever 
4775874b3dSChuck Lever IB_CM_STATE_LIST
4875874b3dSChuck Lever 
4975874b3dSChuck Lever #undef  ib_cm_state
5075874b3dSChuck Lever #undef  ib_cm_state_end
5175874b3dSChuck Lever #define ib_cm_state(x)		{ IB_CM_##x, #x },
5275874b3dSChuck Lever #define ib_cm_state_end(x)	{ IB_CM_##x, #x }
5375874b3dSChuck Lever 
5475874b3dSChuck Lever #define show_ib_cm_state(x) \
5575874b3dSChuck Lever 		__print_symbolic(x, IB_CM_STATE_LIST)
5675874b3dSChuck Lever 
5775874b3dSChuck Lever /*
5875874b3dSChuck Lever  * enum ib_cm_lap_state, from include/rdma/ib_cm.h
5975874b3dSChuck Lever  */
6075874b3dSChuck Lever #define IB_CM_LAP_STATE_LIST					\
6175874b3dSChuck Lever 	ib_cm_lap_state(LAP_UNINIT)				\
6275874b3dSChuck Lever 	ib_cm_lap_state(LAP_IDLE)				\
6375874b3dSChuck Lever 	ib_cm_lap_state(LAP_SENT)				\
6475874b3dSChuck Lever 	ib_cm_lap_state(LAP_RCVD)				\
6575874b3dSChuck Lever 	ib_cm_lap_state(MRA_LAP_SENT)				\
6675874b3dSChuck Lever 	ib_cm_lap_state_end(MRA_LAP_RCVD)
6775874b3dSChuck Lever 
6875874b3dSChuck Lever #undef  ib_cm_lap_state
6975874b3dSChuck Lever #undef  ib_cm_lap_state_end
7075874b3dSChuck Lever #define ib_cm_lap_state(x)	TRACE_DEFINE_ENUM(IB_CM_##x);
7175874b3dSChuck Lever #define ib_cm_lap_state_end(x)	TRACE_DEFINE_ENUM(IB_CM_##x);
7275874b3dSChuck Lever 
7375874b3dSChuck Lever IB_CM_LAP_STATE_LIST
7475874b3dSChuck Lever 
7575874b3dSChuck Lever #undef  ib_cm_lap_state
7675874b3dSChuck Lever #undef  ib_cm_lap_state_end
7775874b3dSChuck Lever #define ib_cm_lap_state(x)	{ IB_CM_##x, #x },
7875874b3dSChuck Lever #define ib_cm_lap_state_end(x)	{ IB_CM_##x, #x }
7975874b3dSChuck Lever 
8075874b3dSChuck Lever #define show_ib_cm_lap_state(x) \
8175874b3dSChuck Lever 		__print_symbolic(x, IB_CM_LAP_STATE_LIST)
8275874b3dSChuck Lever 
838dc105beSChuck Lever /*
848dc105beSChuck Lever  * enum ib_cm_rej_reason, from include/rdma/ib_cm.h
858dc105beSChuck Lever  */
868dc105beSChuck Lever #define IB_CM_REJ_REASON_LIST					\
878dc105beSChuck Lever 	ib_cm_rej_reason(REJ_NO_QP)				\
888dc105beSChuck Lever 	ib_cm_rej_reason(REJ_NO_EEC)				\
898dc105beSChuck Lever 	ib_cm_rej_reason(REJ_NO_RESOURCES)			\
908dc105beSChuck Lever 	ib_cm_rej_reason(REJ_TIMEOUT)				\
918dc105beSChuck Lever 	ib_cm_rej_reason(REJ_UNSUPPORTED)			\
928dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_COMM_ID)			\
938dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_COMM_INSTANCE)		\
948dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_SERVICE_ID)		\
958dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_TRANSPORT_TYPE)		\
968dc105beSChuck Lever 	ib_cm_rej_reason(REJ_STALE_CONN)			\
978dc105beSChuck Lever 	ib_cm_rej_reason(REJ_RDC_NOT_EXIST)			\
988dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_GID)			\
998dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_LID)			\
1008dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_SL)			\
1018dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_TRAFFIC_CLASS)		\
1028dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_HOP_LIMIT)			\
1038dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_PACKET_RATE)		\
1048dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_GID)			\
1058dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_LID)			\
1068dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_SL)			\
1078dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_TRAFFIC_CLASS)		\
1088dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_HOP_LIMIT)		\
1098dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_PACKET_RATE)		\
1108dc105beSChuck Lever 	ib_cm_rej_reason(REJ_PORT_CM_REDIRECT)			\
1118dc105beSChuck Lever 	ib_cm_rej_reason(REJ_PORT_REDIRECT)			\
1128dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_MTU)			\
1138dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INSUFFICIENT_RESP_RESOURCES)	\
1148dc105beSChuck Lever 	ib_cm_rej_reason(REJ_CONSUMER_DEFINED)			\
1158dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_RNR_RETRY)			\
1168dc105beSChuck Lever 	ib_cm_rej_reason(REJ_DUPLICATE_LOCAL_COMM_ID)		\
1178dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_CLASS_VERSION)		\
1188dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_FLOW_LABEL)		\
1198dc105beSChuck Lever 	ib_cm_rej_reason(REJ_INVALID_ALT_FLOW_LABEL)		\
1208dc105beSChuck Lever 	ib_cm_rej_reason_end(REJ_VENDOR_OPTION_NOT_SUPPORTED)
1218dc105beSChuck Lever 
1228dc105beSChuck Lever #undef  ib_cm_rej_reason
1238dc105beSChuck Lever #undef  ib_cm_rej_reason_end
1248dc105beSChuck Lever #define ib_cm_rej_reason(x)	TRACE_DEFINE_ENUM(IB_CM_##x);
1258dc105beSChuck Lever #define ib_cm_rej_reason_end(x)	TRACE_DEFINE_ENUM(IB_CM_##x);
1268dc105beSChuck Lever 
1278dc105beSChuck Lever IB_CM_REJ_REASON_LIST
1288dc105beSChuck Lever 
1298dc105beSChuck Lever #undef  ib_cm_rej_reason
1308dc105beSChuck Lever #undef  ib_cm_rej_reason_end
1318dc105beSChuck Lever #define ib_cm_rej_reason(x)	{ IB_CM_##x, #x },
1328dc105beSChuck Lever #define ib_cm_rej_reason_end(x)	{ IB_CM_##x, #x }
1338dc105beSChuck Lever 
1348dc105beSChuck Lever #define show_ib_cm_rej_reason(x) \
1358dc105beSChuck Lever 		__print_symbolic(x, IB_CM_REJ_REASON_LIST)
13675874b3dSChuck Lever 
13775874b3dSChuck Lever DECLARE_EVENT_CLASS(icm_id_class,
13875874b3dSChuck Lever 	TP_PROTO(
13975874b3dSChuck Lever 		const struct ib_cm_id *cm_id
14075874b3dSChuck Lever 	),
14175874b3dSChuck Lever 
14275874b3dSChuck Lever 	TP_ARGS(cm_id),
14375874b3dSChuck Lever 
14475874b3dSChuck Lever 	TP_STRUCT__entry(
14575874b3dSChuck Lever 		__field(const void *, cm_id)	/* for eBPF scripts */
14675874b3dSChuck Lever 		__field(unsigned int, local_id)
14775874b3dSChuck Lever 		__field(unsigned int, remote_id)
14875874b3dSChuck Lever 		__field(unsigned long, state)
14975874b3dSChuck Lever 		__field(unsigned long, lap_state)
15075874b3dSChuck Lever 	),
15175874b3dSChuck Lever 
15275874b3dSChuck Lever 	TP_fast_assign(
15375874b3dSChuck Lever 		__entry->cm_id = cm_id;
15475874b3dSChuck Lever 		__entry->local_id = be32_to_cpu(cm_id->local_id);
15575874b3dSChuck Lever 		__entry->remote_id = be32_to_cpu(cm_id->remote_id);
15675874b3dSChuck Lever 		__entry->state = cm_id->state;
15775874b3dSChuck Lever 		__entry->lap_state = cm_id->lap_state;
15875874b3dSChuck Lever 	),
15975874b3dSChuck Lever 
16075874b3dSChuck Lever 	TP_printk("local_id=%u remote_id=%u state=%s lap_state=%s",
16175874b3dSChuck Lever 		__entry->local_id, __entry->remote_id,
16275874b3dSChuck Lever 		show_ib_cm_state(__entry->state),
16375874b3dSChuck Lever 		show_ib_cm_lap_state(__entry->lap_state)
16475874b3dSChuck Lever 	)
16575874b3dSChuck Lever );
16675874b3dSChuck Lever 
1678dc105beSChuck Lever #define DEFINE_CM_SEND_EVENT(name)					\
1688dc105beSChuck Lever 		DEFINE_EVENT(icm_id_class,				\
1698dc105beSChuck Lever 				icm_send_##name,				\
1708dc105beSChuck Lever 				TP_PROTO(				\
1718dc105beSChuck Lever 					const struct ib_cm_id *cm_id	\
1728dc105beSChuck Lever 				),					\
1738dc105beSChuck Lever 				TP_ARGS(cm_id))
1748dc105beSChuck Lever 
1758dc105beSChuck Lever DEFINE_CM_SEND_EVENT(req);
1768dc105beSChuck Lever DEFINE_CM_SEND_EVENT(rep);
1778dc105beSChuck Lever DEFINE_CM_SEND_EVENT(dup_req);
1788dc105beSChuck Lever DEFINE_CM_SEND_EVENT(dup_rep);
1798dc105beSChuck Lever DEFINE_CM_SEND_EVENT(rtu);
1808dc105beSChuck Lever DEFINE_CM_SEND_EVENT(mra);
1818dc105beSChuck Lever DEFINE_CM_SEND_EVENT(sidr_req);
1828dc105beSChuck Lever DEFINE_CM_SEND_EVENT(sidr_rep);
1838dc105beSChuck Lever DEFINE_CM_SEND_EVENT(dreq);
1848dc105beSChuck Lever DEFINE_CM_SEND_EVENT(drep);
1858dc105beSChuck Lever 
1868dc105beSChuck Lever TRACE_EVENT(icm_send_rej,
1878dc105beSChuck Lever 	TP_PROTO(
1888dc105beSChuck Lever 		const struct ib_cm_id *cm_id,
1898dc105beSChuck Lever 		enum ib_cm_rej_reason reason
1908dc105beSChuck Lever 	),
1918dc105beSChuck Lever 
1928dc105beSChuck Lever 	TP_ARGS(cm_id, reason),
1938dc105beSChuck Lever 
1948dc105beSChuck Lever 	TP_STRUCT__entry(
1958dc105beSChuck Lever 		__field(const void *, cm_id)
1968dc105beSChuck Lever 		__field(u32, local_id)
1978dc105beSChuck Lever 		__field(u32, remote_id)
1988dc105beSChuck Lever 		__field(unsigned long, state)
1998dc105beSChuck Lever 		__field(unsigned long, reason)
2008dc105beSChuck Lever 	),
2018dc105beSChuck Lever 
2028dc105beSChuck Lever 	TP_fast_assign(
2038dc105beSChuck Lever 		__entry->cm_id = cm_id;
2048dc105beSChuck Lever 		__entry->local_id = be32_to_cpu(cm_id->local_id);
2058dc105beSChuck Lever 		__entry->remote_id = be32_to_cpu(cm_id->remote_id);
2068dc105beSChuck Lever 		__entry->state = cm_id->state;
2078dc105beSChuck Lever 		__entry->reason = reason;
2088dc105beSChuck Lever 	),
2098dc105beSChuck Lever 
2108dc105beSChuck Lever 	TP_printk("local_id=%u remote_id=%u state=%s reason=%s",
2118dc105beSChuck Lever 		__entry->local_id, __entry->remote_id,
2128dc105beSChuck Lever 		show_ib_cm_state(__entry->state),
2138dc105beSChuck Lever 		show_ib_cm_rej_reason(__entry->reason)
2148dc105beSChuck Lever 	)
2158dc105beSChuck Lever );
2168dc105beSChuck Lever 
21775874b3dSChuck Lever #define DEFINE_CM_ERR_EVENT(name)					\
21875874b3dSChuck Lever 		DEFINE_EVENT(icm_id_class,				\
21975874b3dSChuck Lever 				icm_##name##_err,			\
22075874b3dSChuck Lever 				TP_PROTO(				\
22175874b3dSChuck Lever 					const struct ib_cm_id *cm_id	\
22275874b3dSChuck Lever 				),					\
22375874b3dSChuck Lever 				TP_ARGS(cm_id))
22475874b3dSChuck Lever 
22575874b3dSChuck Lever DEFINE_CM_ERR_EVENT(send_cm_rtu);
22675874b3dSChuck Lever DEFINE_CM_ERR_EVENT(establish);
22775874b3dSChuck Lever DEFINE_CM_ERR_EVENT(no_listener);
22875874b3dSChuck Lever DEFINE_CM_ERR_EVENT(send_drep);
22975874b3dSChuck Lever DEFINE_CM_ERR_EVENT(dreq_unknown);
23075874b3dSChuck Lever DEFINE_CM_ERR_EVENT(send_unknown_rej);
23175874b3dSChuck Lever DEFINE_CM_ERR_EVENT(rej_unknown);
23275874b3dSChuck Lever DEFINE_CM_ERR_EVENT(send_mra_unknown);
23375874b3dSChuck Lever DEFINE_CM_ERR_EVENT(mra_unknown);
23475874b3dSChuck Lever DEFINE_CM_ERR_EVENT(qp_init);
23575874b3dSChuck Lever DEFINE_CM_ERR_EVENT(qp_rtr);
23675874b3dSChuck Lever DEFINE_CM_ERR_EVENT(qp_rts);
23775874b3dSChuck Lever 
23875874b3dSChuck Lever DEFINE_EVENT(icm_id_class,						\
23975874b3dSChuck Lever 	icm_dreq_skipped,						\
24075874b3dSChuck Lever 	TP_PROTO(							\
24175874b3dSChuck Lever 		const struct ib_cm_id *cm_id				\
24275874b3dSChuck Lever 	),								\
24375874b3dSChuck Lever 	TP_ARGS(cm_id)							\
24475874b3dSChuck Lever );
24575874b3dSChuck Lever 
24675874b3dSChuck Lever DECLARE_EVENT_CLASS(icm_local_class,
24775874b3dSChuck Lever 	TP_PROTO(
24875874b3dSChuck Lever 		unsigned int local_id,
24975874b3dSChuck Lever 		unsigned int remote_id
25075874b3dSChuck Lever 	),
25175874b3dSChuck Lever 
25275874b3dSChuck Lever 	TP_ARGS(local_id, remote_id),
25375874b3dSChuck Lever 
25475874b3dSChuck Lever 	TP_STRUCT__entry(
25575874b3dSChuck Lever 		__field(unsigned int, local_id)
25675874b3dSChuck Lever 		__field(unsigned int, remote_id)
25775874b3dSChuck Lever 	),
25875874b3dSChuck Lever 
25975874b3dSChuck Lever 	TP_fast_assign(
26075874b3dSChuck Lever 		__entry->local_id = local_id;
26175874b3dSChuck Lever 		__entry->remote_id = remote_id;
26275874b3dSChuck Lever 	),
26375874b3dSChuck Lever 
26475874b3dSChuck Lever 	TP_printk("local_id=%u remote_id=%u",
26575874b3dSChuck Lever 		__entry->local_id, __entry->remote_id
26675874b3dSChuck Lever 	)
26775874b3dSChuck Lever );
26875874b3dSChuck Lever 
26975874b3dSChuck Lever #define DEFINE_CM_LOCAL_EVENT(name)					\
27075874b3dSChuck Lever 		DEFINE_EVENT(icm_local_class,				\
27175874b3dSChuck Lever 				icm_##name,				\
27275874b3dSChuck Lever 				TP_PROTO(				\
27375874b3dSChuck Lever 					unsigned int local_id,			\
27475874b3dSChuck Lever 					unsigned int remote_id			\
27575874b3dSChuck Lever 				),					\
27675874b3dSChuck Lever 				TP_ARGS(local_id, remote_id))
27775874b3dSChuck Lever 
2788dc105beSChuck Lever DEFINE_CM_LOCAL_EVENT(issue_rej);
2798dc105beSChuck Lever DEFINE_CM_LOCAL_EVENT(issue_drep);
28075874b3dSChuck Lever DEFINE_CM_LOCAL_EVENT(staleconn_err);
28175874b3dSChuck Lever DEFINE_CM_LOCAL_EVENT(no_priv_err);
28275874b3dSChuck Lever 
28375874b3dSChuck Lever DECLARE_EVENT_CLASS(icm_remote_class,
28475874b3dSChuck Lever 	TP_PROTO(
28575874b3dSChuck Lever 		u32 remote_id
28675874b3dSChuck Lever 	),
28775874b3dSChuck Lever 
28875874b3dSChuck Lever 	TP_ARGS(remote_id),
28975874b3dSChuck Lever 
29075874b3dSChuck Lever 	TP_STRUCT__entry(
29175874b3dSChuck Lever 		__field(u32, remote_id)
29275874b3dSChuck Lever 	),
29375874b3dSChuck Lever 
29475874b3dSChuck Lever 	TP_fast_assign(
29575874b3dSChuck Lever 		__entry->remote_id = remote_id;
29675874b3dSChuck Lever 	),
29775874b3dSChuck Lever 
29875874b3dSChuck Lever 	TP_printk("remote_id=%u",
29975874b3dSChuck Lever 		__entry->remote_id
30075874b3dSChuck Lever 	)
30175874b3dSChuck Lever );
30275874b3dSChuck Lever 
30375874b3dSChuck Lever #define DEFINE_CM_REMOTE_EVENT(name)					\
30475874b3dSChuck Lever 		DEFINE_EVENT(icm_remote_class,				\
30575874b3dSChuck Lever 				icm_##name,				\
30675874b3dSChuck Lever 				TP_PROTO(				\
30775874b3dSChuck Lever 					u32 remote_id			\
30875874b3dSChuck Lever 				),					\
30975874b3dSChuck Lever 				TP_ARGS(remote_id))
31075874b3dSChuck Lever 
31175874b3dSChuck Lever DEFINE_CM_REMOTE_EVENT(remote_no_priv_err);
31275874b3dSChuck Lever DEFINE_CM_REMOTE_EVENT(insert_failed_err);
31375874b3dSChuck Lever 
31475874b3dSChuck Lever TRACE_EVENT(icm_send_rep_err,
31575874b3dSChuck Lever 	TP_PROTO(
31675874b3dSChuck Lever 		__be32 local_id,
31775874b3dSChuck Lever 		enum ib_cm_state state
31875874b3dSChuck Lever 	),
31975874b3dSChuck Lever 
32075874b3dSChuck Lever 	TP_ARGS(local_id, state),
32175874b3dSChuck Lever 
32275874b3dSChuck Lever 	TP_STRUCT__entry(
32375874b3dSChuck Lever 		__field(unsigned int, local_id)
32475874b3dSChuck Lever 		__field(unsigned long, state)
32575874b3dSChuck Lever 	),
32675874b3dSChuck Lever 
32775874b3dSChuck Lever 	TP_fast_assign(
32875874b3dSChuck Lever 		__entry->local_id = be32_to_cpu(local_id);
32975874b3dSChuck Lever 		__entry->state = state;
33075874b3dSChuck Lever 	),
33175874b3dSChuck Lever 
33275874b3dSChuck Lever 	TP_printk("local_id=%u state=%s",
33375874b3dSChuck Lever 		__entry->local_id, show_ib_cm_state(__entry->state)
33475874b3dSChuck Lever 	)
33575874b3dSChuck Lever );
33675874b3dSChuck Lever 
33775874b3dSChuck Lever TRACE_EVENT(icm_rep_unknown_err,
33875874b3dSChuck Lever 	TP_PROTO(
33975874b3dSChuck Lever 		unsigned int local_id,
34075874b3dSChuck Lever 		unsigned int remote_id,
34175874b3dSChuck Lever 		enum ib_cm_state state
34275874b3dSChuck Lever 	),
34375874b3dSChuck Lever 
34475874b3dSChuck Lever 	TP_ARGS(local_id, remote_id, state),
34575874b3dSChuck Lever 
34675874b3dSChuck Lever 	TP_STRUCT__entry(
34775874b3dSChuck Lever 		__field(unsigned int, local_id)
34875874b3dSChuck Lever 		__field(unsigned int, remote_id)
34975874b3dSChuck Lever 		__field(unsigned long, state)
35075874b3dSChuck Lever 	),
35175874b3dSChuck Lever 
35275874b3dSChuck Lever 	TP_fast_assign(
35375874b3dSChuck Lever 		__entry->local_id = local_id;
35475874b3dSChuck Lever 		__entry->remote_id = remote_id;
35575874b3dSChuck Lever 		__entry->state = state;
35675874b3dSChuck Lever 	),
35775874b3dSChuck Lever 
35875874b3dSChuck Lever 	TP_printk("local_id=%u remote_id=%u state=%s",
35975874b3dSChuck Lever 		__entry->local_id, __entry->remote_id,
36075874b3dSChuck Lever 		show_ib_cm_state(__entry->state)
36175874b3dSChuck Lever 	)
36275874b3dSChuck Lever );
36375874b3dSChuck Lever 
36475874b3dSChuck Lever TRACE_EVENT(icm_handler_err,
36575874b3dSChuck Lever 	TP_PROTO(
36675874b3dSChuck Lever 		enum ib_cm_event_type event
36775874b3dSChuck Lever 	),
36875874b3dSChuck Lever 
36975874b3dSChuck Lever 	TP_ARGS(event),
37075874b3dSChuck Lever 
37175874b3dSChuck Lever 	TP_STRUCT__entry(
37275874b3dSChuck Lever 		__field(unsigned long, event)
37375874b3dSChuck Lever 	),
37475874b3dSChuck Lever 
37575874b3dSChuck Lever 	TP_fast_assign(
37675874b3dSChuck Lever 		__entry->event = event;
37775874b3dSChuck Lever 	),
37875874b3dSChuck Lever 
37975874b3dSChuck Lever 	TP_printk("unhandled event=%s",
38075874b3dSChuck Lever 		rdma_show_ib_cm_event(__entry->event)
38175874b3dSChuck Lever 	)
38275874b3dSChuck Lever );
38375874b3dSChuck Lever 
38475874b3dSChuck Lever TRACE_EVENT(icm_mad_send_err,
38575874b3dSChuck Lever 	TP_PROTO(
38675874b3dSChuck Lever 		enum ib_cm_state state,
38775874b3dSChuck Lever 		enum ib_wc_status wc_status
38875874b3dSChuck Lever 	),
38975874b3dSChuck Lever 
39075874b3dSChuck Lever 	TP_ARGS(state, wc_status),
39175874b3dSChuck Lever 
39275874b3dSChuck Lever 	TP_STRUCT__entry(
39375874b3dSChuck Lever 		__field(unsigned long, state)
39475874b3dSChuck Lever 		__field(unsigned long, wc_status)
39575874b3dSChuck Lever 	),
39675874b3dSChuck Lever 
39775874b3dSChuck Lever 	TP_fast_assign(
39875874b3dSChuck Lever 		__entry->state = state;
39975874b3dSChuck Lever 		__entry->wc_status = wc_status;
40075874b3dSChuck Lever 	),
40175874b3dSChuck Lever 
40275874b3dSChuck Lever 	TP_printk("state=%s completion status=%s",
40375874b3dSChuck Lever 		show_ib_cm_state(__entry->state),
40475874b3dSChuck Lever 		rdma_show_wc_status(__entry->wc_status)
40575874b3dSChuck Lever 	)
40675874b3dSChuck Lever );
40775874b3dSChuck Lever 
40875874b3dSChuck Lever #endif /* _TRACE_IB_CMA_H */
40975874b3dSChuck Lever 
41075874b3dSChuck Lever #undef TRACE_INCLUDE_PATH
41175874b3dSChuck Lever #define TRACE_INCLUDE_PATH ../../drivers/infiniband/core
41275874b3dSChuck Lever #define TRACE_INCLUDE_FILE cm_trace
41375874b3dSChuck Lever 
41475874b3dSChuck Lever #include <trace/define_trace.h>
415