xref: /openbmc/linux/include/trace/events/rdma_core.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
13e5901cbSChuck Lever /* SPDX-License-Identifier: GPL-2.0-only */
23e5901cbSChuck Lever /*
33e5901cbSChuck Lever  * Trace point definitions for core RDMA functions.
43e5901cbSChuck Lever  *
53e5901cbSChuck Lever  * Author: Chuck Lever <chuck.lever@oracle.com>
63e5901cbSChuck Lever  *
73e5901cbSChuck Lever  * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
83e5901cbSChuck Lever  */
93e5901cbSChuck Lever 
103e5901cbSChuck Lever #undef TRACE_SYSTEM
113e5901cbSChuck Lever #define TRACE_SYSTEM rdma_core
123e5901cbSChuck Lever 
133e5901cbSChuck Lever #if !defined(_TRACE_RDMA_CORE_H) || defined(TRACE_HEADER_MULTI_READ)
143e5901cbSChuck Lever #define _TRACE_RDMA_CORE_H
153e5901cbSChuck Lever 
163e5901cbSChuck Lever #include <linux/tracepoint.h>
173e5901cbSChuck Lever #include <rdma/ib_verbs.h>
183e5901cbSChuck Lever 
193e5901cbSChuck Lever /*
203e5901cbSChuck Lever  * enum ib_poll_context, from include/rdma/ib_verbs.h
213e5901cbSChuck Lever  */
223e5901cbSChuck Lever #define IB_POLL_CTX_LIST			\
233e5901cbSChuck Lever 	ib_poll_ctx(DIRECT)			\
243e5901cbSChuck Lever 	ib_poll_ctx(SOFTIRQ)			\
253e5901cbSChuck Lever 	ib_poll_ctx(WORKQUEUE)			\
263e5901cbSChuck Lever 	ib_poll_ctx_end(UNBOUND_WORKQUEUE)
273e5901cbSChuck Lever 
283e5901cbSChuck Lever #undef ib_poll_ctx
293e5901cbSChuck Lever #undef ib_poll_ctx_end
303e5901cbSChuck Lever 
313e5901cbSChuck Lever #define ib_poll_ctx(x)		TRACE_DEFINE_ENUM(IB_POLL_##x);
323e5901cbSChuck Lever #define ib_poll_ctx_end(x)	TRACE_DEFINE_ENUM(IB_POLL_##x);
333e5901cbSChuck Lever 
343e5901cbSChuck Lever IB_POLL_CTX_LIST
353e5901cbSChuck Lever 
363e5901cbSChuck Lever #undef ib_poll_ctx
373e5901cbSChuck Lever #undef ib_poll_ctx_end
383e5901cbSChuck Lever 
393e5901cbSChuck Lever #define ib_poll_ctx(x)		{ IB_POLL_##x, #x },
403e5901cbSChuck Lever #define ib_poll_ctx_end(x)	{ IB_POLL_##x, #x }
413e5901cbSChuck Lever 
423e5901cbSChuck Lever #define rdma_show_ib_poll_ctx(x) \
433e5901cbSChuck Lever 		__print_symbolic(x, IB_POLL_CTX_LIST)
443e5901cbSChuck Lever 
453e5901cbSChuck Lever /**
463e5901cbSChuck Lever  ** Completion Queue events
473e5901cbSChuck Lever  **/
483e5901cbSChuck Lever 
493e5901cbSChuck Lever TRACE_EVENT(cq_schedule,
503e5901cbSChuck Lever 	TP_PROTO(
513e5901cbSChuck Lever 		struct ib_cq *cq
523e5901cbSChuck Lever 	),
533e5901cbSChuck Lever 
543e5901cbSChuck Lever 	TP_ARGS(cq),
553e5901cbSChuck Lever 
563e5901cbSChuck Lever 	TP_STRUCT__entry(
573e5901cbSChuck Lever 		__field(u32, cq_id)
583e5901cbSChuck Lever 	),
593e5901cbSChuck Lever 
603e5901cbSChuck Lever 	TP_fast_assign(
613e5901cbSChuck Lever 		cq->timestamp = ktime_get();
623e5901cbSChuck Lever 		cq->interrupt = true;
633e5901cbSChuck Lever 
643e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
653e5901cbSChuck Lever 	),
663e5901cbSChuck Lever 
673e5901cbSChuck Lever 	TP_printk("cq.id=%u", __entry->cq_id)
683e5901cbSChuck Lever );
693e5901cbSChuck Lever 
703e5901cbSChuck Lever TRACE_EVENT(cq_reschedule,
713e5901cbSChuck Lever 	TP_PROTO(
723e5901cbSChuck Lever 		struct ib_cq *cq
733e5901cbSChuck Lever 	),
743e5901cbSChuck Lever 
753e5901cbSChuck Lever 	TP_ARGS(cq),
763e5901cbSChuck Lever 
773e5901cbSChuck Lever 	TP_STRUCT__entry(
783e5901cbSChuck Lever 		__field(u32, cq_id)
793e5901cbSChuck Lever 	),
803e5901cbSChuck Lever 
813e5901cbSChuck Lever 	TP_fast_assign(
823e5901cbSChuck Lever 		cq->timestamp = ktime_get();
833e5901cbSChuck Lever 		cq->interrupt = false;
843e5901cbSChuck Lever 
853e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
863e5901cbSChuck Lever 	),
873e5901cbSChuck Lever 
883e5901cbSChuck Lever 	TP_printk("cq.id=%u", __entry->cq_id)
893e5901cbSChuck Lever );
903e5901cbSChuck Lever 
913e5901cbSChuck Lever TRACE_EVENT(cq_process,
923e5901cbSChuck Lever 	TP_PROTO(
933e5901cbSChuck Lever 		const struct ib_cq *cq
943e5901cbSChuck Lever 	),
953e5901cbSChuck Lever 
963e5901cbSChuck Lever 	TP_ARGS(cq),
973e5901cbSChuck Lever 
983e5901cbSChuck Lever 	TP_STRUCT__entry(
993e5901cbSChuck Lever 		__field(u32, cq_id)
1003e5901cbSChuck Lever 		__field(bool, interrupt)
1013e5901cbSChuck Lever 		__field(s64, latency)
1023e5901cbSChuck Lever 	),
1033e5901cbSChuck Lever 
1043e5901cbSChuck Lever 	TP_fast_assign(
1053e5901cbSChuck Lever 		ktime_t latency = ktime_sub(ktime_get(), cq->timestamp);
1063e5901cbSChuck Lever 
1073e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
1083e5901cbSChuck Lever 		__entry->latency = ktime_to_us(latency);
1093e5901cbSChuck Lever 		__entry->interrupt = cq->interrupt;
1103e5901cbSChuck Lever 	),
1113e5901cbSChuck Lever 
1123e5901cbSChuck Lever 	TP_printk("cq.id=%u wake-up took %lld [us] from %s",
1133e5901cbSChuck Lever 		__entry->cq_id, __entry->latency,
1143e5901cbSChuck Lever 		__entry->interrupt ? "interrupt" : "reschedule"
1153e5901cbSChuck Lever 	)
1163e5901cbSChuck Lever );
1173e5901cbSChuck Lever 
1183e5901cbSChuck Lever TRACE_EVENT(cq_poll,
1193e5901cbSChuck Lever 	TP_PROTO(
1203e5901cbSChuck Lever 		const struct ib_cq *cq,
1213e5901cbSChuck Lever 		int requested,
1223e5901cbSChuck Lever 		int rc
1233e5901cbSChuck Lever 	),
1243e5901cbSChuck Lever 
1253e5901cbSChuck Lever 	TP_ARGS(cq, requested, rc),
1263e5901cbSChuck Lever 
1273e5901cbSChuck Lever 	TP_STRUCT__entry(
1283e5901cbSChuck Lever 		__field(u32, cq_id)
1293e5901cbSChuck Lever 		__field(int, requested)
1303e5901cbSChuck Lever 		__field(int, rc)
1313e5901cbSChuck Lever 	),
1323e5901cbSChuck Lever 
1333e5901cbSChuck Lever 	TP_fast_assign(
1343e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
1353e5901cbSChuck Lever 		__entry->requested = requested;
1363e5901cbSChuck Lever 		__entry->rc = rc;
1373e5901cbSChuck Lever 	),
1383e5901cbSChuck Lever 
1393e5901cbSChuck Lever 	TP_printk("cq.id=%u requested %d, returned %d",
1403e5901cbSChuck Lever 		__entry->cq_id, __entry->requested, __entry->rc
1413e5901cbSChuck Lever 	)
1423e5901cbSChuck Lever );
1433e5901cbSChuck Lever 
1443e5901cbSChuck Lever TRACE_EVENT(cq_drain_complete,
1453e5901cbSChuck Lever 	TP_PROTO(
1463e5901cbSChuck Lever 		const struct ib_cq *cq
1473e5901cbSChuck Lever 	),
1483e5901cbSChuck Lever 
1493e5901cbSChuck Lever 	TP_ARGS(cq),
1503e5901cbSChuck Lever 
1513e5901cbSChuck Lever 	TP_STRUCT__entry(
1523e5901cbSChuck Lever 		__field(u32, cq_id)
1533e5901cbSChuck Lever 	),
1543e5901cbSChuck Lever 
1553e5901cbSChuck Lever 	TP_fast_assign(
1563e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
1573e5901cbSChuck Lever 	),
1583e5901cbSChuck Lever 
1593e5901cbSChuck Lever 	TP_printk("cq.id=%u",
1603e5901cbSChuck Lever 		__entry->cq_id
1613e5901cbSChuck Lever 	)
1623e5901cbSChuck Lever );
1633e5901cbSChuck Lever 
1643e5901cbSChuck Lever 
1653e5901cbSChuck Lever TRACE_EVENT(cq_modify,
1663e5901cbSChuck Lever 	TP_PROTO(
1673e5901cbSChuck Lever 		const struct ib_cq *cq,
1683e5901cbSChuck Lever 		u16 comps,
1693e5901cbSChuck Lever 		u16 usec
1703e5901cbSChuck Lever 	),
1713e5901cbSChuck Lever 
1723e5901cbSChuck Lever 	TP_ARGS(cq, comps, usec),
1733e5901cbSChuck Lever 
1743e5901cbSChuck Lever 	TP_STRUCT__entry(
1753e5901cbSChuck Lever 		__field(u32, cq_id)
1763e5901cbSChuck Lever 		__field(unsigned int, comps)
1773e5901cbSChuck Lever 		__field(unsigned int, usec)
1783e5901cbSChuck Lever 	),
1793e5901cbSChuck Lever 
1803e5901cbSChuck Lever 	TP_fast_assign(
1813e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
1823e5901cbSChuck Lever 		__entry->comps = comps;
1833e5901cbSChuck Lever 		__entry->usec = usec;
1843e5901cbSChuck Lever 	),
1853e5901cbSChuck Lever 
1863e5901cbSChuck Lever 	TP_printk("cq.id=%u comps=%u usec=%u",
1873e5901cbSChuck Lever 		__entry->cq_id, __entry->comps, __entry->usec
1883e5901cbSChuck Lever 	)
1893e5901cbSChuck Lever );
1903e5901cbSChuck Lever 
1913e5901cbSChuck Lever TRACE_EVENT(cq_alloc,
1923e5901cbSChuck Lever 	TP_PROTO(
1933e5901cbSChuck Lever 		const struct ib_cq *cq,
1943e5901cbSChuck Lever 		int nr_cqe,
1953e5901cbSChuck Lever 		int comp_vector,
1963e5901cbSChuck Lever 		enum ib_poll_context poll_ctx
1973e5901cbSChuck Lever 	),
1983e5901cbSChuck Lever 
1993e5901cbSChuck Lever 	TP_ARGS(cq, nr_cqe, comp_vector, poll_ctx),
2003e5901cbSChuck Lever 
2013e5901cbSChuck Lever 	TP_STRUCT__entry(
2023e5901cbSChuck Lever 		__field(u32, cq_id)
2033e5901cbSChuck Lever 		__field(int, nr_cqe)
2043e5901cbSChuck Lever 		__field(int, comp_vector)
2053e5901cbSChuck Lever 		__field(unsigned long, poll_ctx)
2063e5901cbSChuck Lever 	),
2073e5901cbSChuck Lever 
2083e5901cbSChuck Lever 	TP_fast_assign(
2093e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
2103e5901cbSChuck Lever 		__entry->nr_cqe = nr_cqe;
2113e5901cbSChuck Lever 		__entry->comp_vector = comp_vector;
2123e5901cbSChuck Lever 		__entry->poll_ctx = poll_ctx;
2133e5901cbSChuck Lever 	),
2143e5901cbSChuck Lever 
2153e5901cbSChuck Lever 	TP_printk("cq.id=%u nr_cqe=%d comp_vector=%d poll_ctx=%s",
2163e5901cbSChuck Lever 		__entry->cq_id, __entry->nr_cqe, __entry->comp_vector,
2173e5901cbSChuck Lever 		rdma_show_ib_poll_ctx(__entry->poll_ctx)
2183e5901cbSChuck Lever 	)
2193e5901cbSChuck Lever );
2203e5901cbSChuck Lever 
2213e5901cbSChuck Lever TRACE_EVENT(cq_alloc_error,
2223e5901cbSChuck Lever 	TP_PROTO(
2233e5901cbSChuck Lever 		int nr_cqe,
2243e5901cbSChuck Lever 		int comp_vector,
2253e5901cbSChuck Lever 		enum ib_poll_context poll_ctx,
2263e5901cbSChuck Lever 		int rc
2273e5901cbSChuck Lever 	),
2283e5901cbSChuck Lever 
2293e5901cbSChuck Lever 	TP_ARGS(nr_cqe, comp_vector, poll_ctx, rc),
2303e5901cbSChuck Lever 
2313e5901cbSChuck Lever 	TP_STRUCT__entry(
2323e5901cbSChuck Lever 		__field(int, rc)
2333e5901cbSChuck Lever 		__field(int, nr_cqe)
2343e5901cbSChuck Lever 		__field(int, comp_vector)
2353e5901cbSChuck Lever 		__field(unsigned long, poll_ctx)
2363e5901cbSChuck Lever 	),
2373e5901cbSChuck Lever 
2383e5901cbSChuck Lever 	TP_fast_assign(
2393e5901cbSChuck Lever 		__entry->rc = rc;
2403e5901cbSChuck Lever 		__entry->nr_cqe = nr_cqe;
2413e5901cbSChuck Lever 		__entry->comp_vector = comp_vector;
2423e5901cbSChuck Lever 		__entry->poll_ctx = poll_ctx;
2433e5901cbSChuck Lever 	),
2443e5901cbSChuck Lever 
2453e5901cbSChuck Lever 	TP_printk("nr_cqe=%d comp_vector=%d poll_ctx=%s rc=%d",
2463e5901cbSChuck Lever 		__entry->nr_cqe, __entry->comp_vector,
2473e5901cbSChuck Lever 		rdma_show_ib_poll_ctx(__entry->poll_ctx), __entry->rc
2483e5901cbSChuck Lever 	)
2493e5901cbSChuck Lever );
2503e5901cbSChuck Lever 
2513e5901cbSChuck Lever TRACE_EVENT(cq_free,
2523e5901cbSChuck Lever 	TP_PROTO(
2533e5901cbSChuck Lever 		const struct ib_cq *cq
2543e5901cbSChuck Lever 	),
2553e5901cbSChuck Lever 
2563e5901cbSChuck Lever 	TP_ARGS(cq),
2573e5901cbSChuck Lever 
2583e5901cbSChuck Lever 	TP_STRUCT__entry(
2593e5901cbSChuck Lever 		__field(u32, cq_id)
2603e5901cbSChuck Lever 	),
2613e5901cbSChuck Lever 
2623e5901cbSChuck Lever 	TP_fast_assign(
2633e5901cbSChuck Lever 		__entry->cq_id = cq->res.id;
2643e5901cbSChuck Lever 	),
2653e5901cbSChuck Lever 
2663e5901cbSChuck Lever 	TP_printk("cq.id=%u", __entry->cq_id)
2673e5901cbSChuck Lever );
2683e5901cbSChuck Lever 
269*622db5b6SChuck Lever /**
270*622db5b6SChuck Lever  ** Memory Region events
271*622db5b6SChuck Lever  **/
272*622db5b6SChuck Lever 
273*622db5b6SChuck Lever /*
274*622db5b6SChuck Lever  * enum ib_mr_type, from include/rdma/ib_verbs.h
275*622db5b6SChuck Lever  */
276*622db5b6SChuck Lever #define IB_MR_TYPE_LIST				\
277*622db5b6SChuck Lever 	ib_mr_type_item(MEM_REG)		\
278*622db5b6SChuck Lever 	ib_mr_type_item(SG_GAPS)		\
279*622db5b6SChuck Lever 	ib_mr_type_item(DM)			\
280*622db5b6SChuck Lever 	ib_mr_type_item(USER)			\
281*622db5b6SChuck Lever 	ib_mr_type_item(DMA)			\
282*622db5b6SChuck Lever 	ib_mr_type_end(INTEGRITY)
283*622db5b6SChuck Lever 
284*622db5b6SChuck Lever #undef ib_mr_type_item
285*622db5b6SChuck Lever #undef ib_mr_type_end
286*622db5b6SChuck Lever 
287*622db5b6SChuck Lever #define ib_mr_type_item(x)	TRACE_DEFINE_ENUM(IB_MR_TYPE_##x);
288*622db5b6SChuck Lever #define ib_mr_type_end(x)	TRACE_DEFINE_ENUM(IB_MR_TYPE_##x);
289*622db5b6SChuck Lever 
290*622db5b6SChuck Lever IB_MR_TYPE_LIST
291*622db5b6SChuck Lever 
292*622db5b6SChuck Lever #undef ib_mr_type_item
293*622db5b6SChuck Lever #undef ib_mr_type_end
294*622db5b6SChuck Lever 
295*622db5b6SChuck Lever #define ib_mr_type_item(x)	{ IB_MR_TYPE_##x, #x },
296*622db5b6SChuck Lever #define ib_mr_type_end(x)	{ IB_MR_TYPE_##x, #x }
297*622db5b6SChuck Lever 
298*622db5b6SChuck Lever #define rdma_show_ib_mr_type(x) \
299*622db5b6SChuck Lever 		__print_symbolic(x, IB_MR_TYPE_LIST)
300*622db5b6SChuck Lever 
301*622db5b6SChuck Lever TRACE_EVENT(mr_alloc,
302*622db5b6SChuck Lever 	TP_PROTO(
303*622db5b6SChuck Lever 		const struct ib_pd *pd,
304*622db5b6SChuck Lever 		enum ib_mr_type mr_type,
305*622db5b6SChuck Lever 		u32 max_num_sg,
306*622db5b6SChuck Lever 		const struct ib_mr *mr
307*622db5b6SChuck Lever 	),
308*622db5b6SChuck Lever 
309*622db5b6SChuck Lever 	TP_ARGS(pd, mr_type, max_num_sg, mr),
310*622db5b6SChuck Lever 
311*622db5b6SChuck Lever 	TP_STRUCT__entry(
312*622db5b6SChuck Lever 		__field(u32, pd_id)
313*622db5b6SChuck Lever 		__field(u32, mr_id)
314*622db5b6SChuck Lever 		__field(u32, max_num_sg)
315*622db5b6SChuck Lever 		__field(int, rc)
316*622db5b6SChuck Lever 		__field(unsigned long, mr_type)
317*622db5b6SChuck Lever 	),
318*622db5b6SChuck Lever 
319*622db5b6SChuck Lever 	TP_fast_assign(
320*622db5b6SChuck Lever 		__entry->pd_id = pd->res.id;
321*622db5b6SChuck Lever 		if (IS_ERR(mr)) {
322*622db5b6SChuck Lever 			__entry->mr_id = 0;
323*622db5b6SChuck Lever 			__entry->rc = PTR_ERR(mr);
324*622db5b6SChuck Lever 		} else {
325*622db5b6SChuck Lever 			__entry->mr_id = mr->res.id;
326*622db5b6SChuck Lever 			__entry->rc = 0;
327*622db5b6SChuck Lever 		}
328*622db5b6SChuck Lever 		__entry->max_num_sg = max_num_sg;
329*622db5b6SChuck Lever 		__entry->mr_type = mr_type;
330*622db5b6SChuck Lever 	),
331*622db5b6SChuck Lever 
332*622db5b6SChuck Lever 	TP_printk("pd.id=%u mr.id=%u type=%s max_num_sg=%u rc=%d",
333*622db5b6SChuck Lever 		__entry->pd_id, __entry->mr_id,
334*622db5b6SChuck Lever 		rdma_show_ib_mr_type(__entry->mr_type),
335*622db5b6SChuck Lever 		__entry->max_num_sg, __entry->rc)
336*622db5b6SChuck Lever );
337*622db5b6SChuck Lever 
338*622db5b6SChuck Lever TRACE_EVENT(mr_integ_alloc,
339*622db5b6SChuck Lever 	TP_PROTO(
340*622db5b6SChuck Lever 		const struct ib_pd *pd,
341*622db5b6SChuck Lever 		u32 max_num_data_sg,
342*622db5b6SChuck Lever 		u32 max_num_meta_sg,
343*622db5b6SChuck Lever 		const struct ib_mr *mr
344*622db5b6SChuck Lever 	),
345*622db5b6SChuck Lever 
346*622db5b6SChuck Lever 	TP_ARGS(pd, max_num_data_sg, max_num_meta_sg, mr),
347*622db5b6SChuck Lever 
348*622db5b6SChuck Lever 	TP_STRUCT__entry(
349*622db5b6SChuck Lever 		__field(u32, pd_id)
350*622db5b6SChuck Lever 		__field(u32, mr_id)
351*622db5b6SChuck Lever 		__field(u32, max_num_data_sg)
352*622db5b6SChuck Lever 		__field(u32, max_num_meta_sg)
353*622db5b6SChuck Lever 		__field(int, rc)
354*622db5b6SChuck Lever 	),
355*622db5b6SChuck Lever 
356*622db5b6SChuck Lever 	TP_fast_assign(
357*622db5b6SChuck Lever 		__entry->pd_id = pd->res.id;
358*622db5b6SChuck Lever 		if (IS_ERR(mr)) {
359*622db5b6SChuck Lever 			__entry->mr_id = 0;
360*622db5b6SChuck Lever 			__entry->rc = PTR_ERR(mr);
361*622db5b6SChuck Lever 		} else {
362*622db5b6SChuck Lever 			__entry->mr_id = mr->res.id;
363*622db5b6SChuck Lever 			__entry->rc = 0;
364*622db5b6SChuck Lever 		}
365*622db5b6SChuck Lever 		__entry->max_num_data_sg = max_num_data_sg;
366*622db5b6SChuck Lever 		__entry->max_num_meta_sg = max_num_meta_sg;
367*622db5b6SChuck Lever 	),
368*622db5b6SChuck Lever 
369*622db5b6SChuck Lever 	TP_printk("pd.id=%u mr.id=%u max_num_data_sg=%u max_num_meta_sg=%u rc=%d",
370*622db5b6SChuck Lever 		__entry->pd_id, __entry->mr_id, __entry->max_num_data_sg,
371*622db5b6SChuck Lever 		__entry->max_num_meta_sg, __entry->rc)
372*622db5b6SChuck Lever );
373*622db5b6SChuck Lever 
374*622db5b6SChuck Lever TRACE_EVENT(mr_dereg,
375*622db5b6SChuck Lever 	TP_PROTO(
376*622db5b6SChuck Lever 		const struct ib_mr *mr
377*622db5b6SChuck Lever 	),
378*622db5b6SChuck Lever 
379*622db5b6SChuck Lever 	TP_ARGS(mr),
380*622db5b6SChuck Lever 
381*622db5b6SChuck Lever 	TP_STRUCT__entry(
382*622db5b6SChuck Lever 		__field(u32, id)
383*622db5b6SChuck Lever 	),
384*622db5b6SChuck Lever 
385*622db5b6SChuck Lever 	TP_fast_assign(
386*622db5b6SChuck Lever 		__entry->id = mr->res.id;
387*622db5b6SChuck Lever 	),
388*622db5b6SChuck Lever 
389*622db5b6SChuck Lever 	TP_printk("mr.id=%u", __entry->id)
390*622db5b6SChuck Lever );
391*622db5b6SChuck Lever 
3923e5901cbSChuck Lever #endif /* _TRACE_RDMA_CORE_H */
3933e5901cbSChuck Lever 
3943e5901cbSChuck Lever #include <trace/define_trace.h>
395