| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Trace point definitions for the RDMA Connect Manager.
- *
- * Author: Chuck Lever <chuck.lever@oracle.com>
- *
- * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
- */
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM rdma_cma
- #if !defined(_TRACE_RDMA_CMA_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _TRACE_RDMA_CMA_H
- #include <linux/tracepoint.h>
- #include <trace/misc/rdma.h>
- DECLARE_EVENT_CLASS(cma_fsm_class,
- TP_PROTO(
- const struct rdma_id_private *id_priv
- ),
- TP_ARGS(id_priv),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, tos)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->tos = id_priv->tos;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos
- )
- );
- #define DEFINE_CMA_FSM_EVENT(name) \
- DEFINE_EVENT(cma_fsm_class, cm_##name, \
- TP_PROTO( \
- const struct rdma_id_private *id_priv \
- ), \
- TP_ARGS(id_priv))
- DEFINE_CMA_FSM_EVENT(send_rtu);
- DEFINE_CMA_FSM_EVENT(send_rej);
- DEFINE_CMA_FSM_EVENT(send_mra);
- DEFINE_CMA_FSM_EVENT(send_sidr_req);
- DEFINE_CMA_FSM_EVENT(send_sidr_rep);
- DEFINE_CMA_FSM_EVENT(disconnect);
- DEFINE_CMA_FSM_EVENT(sent_drep);
- DEFINE_CMA_FSM_EVENT(sent_dreq);
- DEFINE_CMA_FSM_EVENT(id_destroy);
- TRACE_EVENT(cm_id_attach,
- TP_PROTO(
- const struct rdma_id_private *id_priv,
- const struct ib_device *device
- ),
- TP_ARGS(id_priv, device),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- __string(devname, device->name)
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- __assign_str(devname);
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc device=%s",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr,
- __get_str(devname)
- )
- );
- DECLARE_EVENT_CLASS(cma_qp_class,
- TP_PROTO(
- const struct rdma_id_private *id_priv
- ),
- TP_ARGS(id_priv),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, tos)
- __field(u32, qp_num)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->tos = id_priv->tos;
- __entry->qp_num = id_priv->qp_num;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u qp_num=%u",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
- __entry->qp_num
- )
- );
- #define DEFINE_CMA_QP_EVENT(name) \
- DEFINE_EVENT(cma_qp_class, cm_##name, \
- TP_PROTO( \
- const struct rdma_id_private *id_priv \
- ), \
- TP_ARGS(id_priv))
- DEFINE_CMA_QP_EVENT(send_req);
- DEFINE_CMA_QP_EVENT(send_rep);
- DEFINE_CMA_QP_EVENT(qp_destroy);
- /*
- * enum ib_wp_type, from include/rdma/ib_verbs.h
- */
- #define IB_QP_TYPE_LIST \
- ib_qp_type(SMI) \
- ib_qp_type(GSI) \
- ib_qp_type(RC) \
- ib_qp_type(UC) \
- ib_qp_type(UD) \
- ib_qp_type(RAW_IPV6) \
- ib_qp_type(RAW_ETHERTYPE) \
- ib_qp_type(RAW_PACKET) \
- ib_qp_type(XRC_INI) \
- ib_qp_type_end(XRC_TGT)
- #undef ib_qp_type
- #undef ib_qp_type_end
- #define ib_qp_type(x) TRACE_DEFINE_ENUM(IB_QPT_##x);
- #define ib_qp_type_end(x) TRACE_DEFINE_ENUM(IB_QPT_##x);
- IB_QP_TYPE_LIST
- #undef ib_qp_type
- #undef ib_qp_type_end
- #define ib_qp_type(x) { IB_QPT_##x, #x },
- #define ib_qp_type_end(x) { IB_QPT_##x, #x }
- #define rdma_show_qp_type(x) \
- __print_symbolic(x, IB_QP_TYPE_LIST)
- TRACE_EVENT(cm_qp_create,
- TP_PROTO(
- const struct rdma_id_private *id_priv,
- const struct ib_pd *pd,
- const struct ib_qp_init_attr *qp_init_attr,
- int rc
- ),
- TP_ARGS(id_priv, pd, qp_init_attr, rc),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, pd_id)
- __field(u32, tos)
- __field(u32, qp_num)
- __field(u32, send_wr)
- __field(u32, recv_wr)
- __field(int, rc)
- __field(unsigned long, qp_type)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->pd_id = pd->res.id;
- __entry->tos = id_priv->tos;
- __entry->send_wr = qp_init_attr->cap.max_send_wr;
- __entry->recv_wr = qp_init_attr->cap.max_recv_wr;
- __entry->rc = rc;
- if (!rc) {
- __entry->qp_num = id_priv->qp_num;
- __entry->qp_type = id_priv->id.qp_type;
- } else {
- __entry->qp_num = 0;
- __entry->qp_type = 0;
- }
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u pd.id=%u qp_type=%s"
- " send_wr=%u recv_wr=%u qp_num=%u rc=%d",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr,
- __entry->tos, __entry->pd_id,
- rdma_show_qp_type(__entry->qp_type), __entry->send_wr,
- __entry->recv_wr, __entry->qp_num, __entry->rc
- )
- );
- TRACE_EVENT(cm_req_handler,
- TP_PROTO(
- const struct rdma_id_private *id_priv,
- int event
- ),
- TP_ARGS(id_priv, event),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, tos)
- __field(unsigned long, event)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->tos = id_priv->tos;
- __entry->event = event;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu)",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
- rdma_show_ib_cm_event(__entry->event), __entry->event
- )
- );
- TRACE_EVENT(cm_event_handler,
- TP_PROTO(
- const struct rdma_id_private *id_priv,
- const struct rdma_cm_event *event
- ),
- TP_ARGS(id_priv, event),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, tos)
- __field(unsigned long, event)
- __field(int, status)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->tos = id_priv->tos;
- __entry->event = event->event;
- __entry->status = event->status;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s (%lu/%d)",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
- rdma_show_cm_event(__entry->event), __entry->event,
- __entry->status
- )
- );
- TRACE_EVENT(cm_event_done,
- TP_PROTO(
- const struct rdma_id_private *id_priv,
- const struct rdma_cm_event *event,
- int result
- ),
- TP_ARGS(id_priv, event, result),
- TP_STRUCT__entry(
- __field(u32, cm_id)
- __field(u32, tos)
- __field(unsigned long, event)
- __field(int, result)
- __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
- __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
- ),
- TP_fast_assign(
- __entry->cm_id = id_priv->res.id;
- __entry->tos = id_priv->tos;
- __entry->event = event->event;
- __entry->result = result;
- memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
- sizeof(struct sockaddr_in6));
- memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
- sizeof(struct sockaddr_in6));
- ),
- TP_printk("cm.id=%u src=%pISpc dst=%pISpc tos=%u %s consumer returns %d",
- __entry->cm_id, __entry->srcaddr, __entry->dstaddr, __entry->tos,
- rdma_show_cm_event(__entry->event), __entry->result
- )
- );
- DECLARE_EVENT_CLASS(cma_client_class,
- TP_PROTO(
- const struct ib_device *device
- ),
- TP_ARGS(device),
- TP_STRUCT__entry(
- __string(name, device->name)
- ),
- TP_fast_assign(
- __assign_str(name);
- ),
- TP_printk("device name=%s",
- __get_str(name)
- )
- );
- #define DEFINE_CMA_CLIENT_EVENT(name) \
- DEFINE_EVENT(cma_client_class, cm_##name, \
- TP_PROTO( \
- const struct ib_device *device \
- ), \
- TP_ARGS(device))
- DEFINE_CMA_CLIENT_EVENT(add_one);
- DEFINE_CMA_CLIENT_EVENT(remove_one);
- #endif /* _TRACE_RDMA_CMA_H */
- #undef TRACE_INCLUDE_PATH
- #define TRACE_INCLUDE_PATH .
- #define TRACE_INCLUDE_FILE cma_trace
- #include <trace/define_trace.h>
|