^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2017, 2018 Oracle. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Trace point definitions for the "rpcrdma" subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define TRACE_SYSTEM rpcrdma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #if !defined(_TRACE_RPCRDMA_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _TRACE_RPCRDMA_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/scatterlist.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/sunrpc/rpc_rdma_cid.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include <rdma/ib_cm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <trace/events/rdma.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ** Event classes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) DECLARE_EVENT_CLASS(rpcrdma_completion_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) const struct ib_wc *wc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) const struct rpc_rdma_cid *cid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) TP_ARGS(wc, cid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) __field(unsigned long, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) __field(unsigned int, vendor_err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) __entry->cq_id = cid->ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) __entry->completion_id = cid->ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) __entry->status = wc->status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) if (wc->status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) __entry->vendor_err = wc->vendor_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) __entry->vendor_err = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) TP_printk("cq.id=%u cid=%d status=%s (%lu/0x%x)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) rdma_show_wc_status(__entry->status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) __entry->status, __entry->vendor_err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define DEFINE_COMPLETION_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) DEFINE_EVENT(rpcrdma_completion_class, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) const struct ib_wc *wc, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) const struct rpc_rdma_cid *cid \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) TP_ARGS(wc, cid))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) DECLARE_EVENT_CLASS(xprtrdma_reply_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) const struct rpcrdma_rep *rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) TP_ARGS(rep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) __field(u32, version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) __field(u32, proc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) __entry->rep = rep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) __entry->r_xprt = rep->rr_rxprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) __entry->xid = be32_to_cpu(rep->rr_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) __entry->version = be32_to_cpu(rep->rr_vers);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) __entry->proc = be32_to_cpu(rep->rr_proc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) TP_printk("rxprt %p xid=0x%08x rep=%p: version %u proc %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) __entry->r_xprt, __entry->xid, __entry->rep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) __entry->version, __entry->proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #define DEFINE_REPLY_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) DEFINE_EVENT(xprtrdma_reply_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) const struct rpcrdma_rep *rep \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) TP_ARGS(rep))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) DECLARE_EVENT_CLASS(xprtrdma_rxprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) const struct rpcrdma_xprt *r_xprt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) TP_ARGS(r_xprt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) TP_printk("peer=[%s]:%s r_xprt=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) __get_str(addr), __get_str(port), __entry->r_xprt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define DEFINE_RXPRT_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) DEFINE_EVENT(xprtrdma_rxprt, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) const struct rpcrdma_xprt *r_xprt \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) TP_ARGS(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) DECLARE_EVENT_CLASS(xprtrdma_connect_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) int rc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) TP_ARGS(r_xprt, rc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) __field(int, rc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) __field(int, connect_status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) __entry->rc = rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) __entry->connect_status = r_xprt->rx_ep->re_connect_status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) TP_printk("peer=[%s]:%s r_xprt=%p: rc=%d connection status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) __get_str(addr), __get_str(port), __entry->r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) __entry->rc, __entry->connect_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define DEFINE_CONN_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) DEFINE_EVENT(xprtrdma_connect_class, xprtrdma_##name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) const struct rpcrdma_xprt *r_xprt, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) int rc \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) TP_ARGS(r_xprt, rc))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) unsigned int pos,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) int nsegs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) TP_ARGS(task, pos, mr, nsegs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) __field(unsigned int, pos)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) __field(int, nsegs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) __entry->task_id = task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) __entry->client_id = task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) __entry->pos = pos;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) __entry->nents = mr->mr_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) __entry->handle = mr->mr_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) __entry->length = mr->mr_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) __entry->offset = mr->mr_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) __entry->nsegs = nsegs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) TP_printk("task:%u@%u pos=%u %u@0x%016llx:0x%08x (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) __entry->task_id, __entry->client_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) __entry->pos, __entry->length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) (unsigned long long)__entry->offset, __entry->handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) __entry->nents < __entry->nsegs ? "more" : "last"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) #define DEFINE_RDCH_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) DEFINE_EVENT(xprtrdma_rdch_event, xprtrdma_chunk_##name,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) const struct rpc_task *task, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) unsigned int pos, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) struct rpcrdma_mr *mr, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) int nsegs \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) TP_ARGS(task, pos, mr, nsegs))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) DECLARE_EVENT_CLASS(xprtrdma_wrch_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) int nsegs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) TP_ARGS(task, mr, nsegs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) __field(int, nsegs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) __entry->task_id = task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) __entry->client_id = task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) __entry->nents = mr->mr_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) __entry->handle = mr->mr_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) __entry->length = mr->mr_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) __entry->offset = mr->mr_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) __entry->nsegs = nsegs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) TP_printk("task:%u@%u %u@0x%016llx:0x%08x (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) __entry->task_id, __entry->client_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) __entry->length, (unsigned long long)__entry->offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) __entry->handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) __entry->nents < __entry->nsegs ? "more" : "last"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define DEFINE_WRCH_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) DEFINE_EVENT(xprtrdma_wrch_event, xprtrdma_chunk_##name,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) const struct rpc_task *task, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) struct rpcrdma_mr *mr, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) int nsegs \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) TP_ARGS(task, mr, nsegs))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) DECLARE_EVENT_CLASS(xprtrdma_frwr_done,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) const struct ib_wc *wc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) const struct rpcrdma_frwr *frwr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) TP_ARGS(wc, frwr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) __field(unsigned int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) __field(unsigned int, vendor_err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) __entry->mr_id = frwr->fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) __entry->status = wc->status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) __entry->vendor_err = __entry->status ? wc->vendor_err : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) TP_printk(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) "mr.id=%u: %s (%u/0x%x)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) __entry->mr_id, rdma_show_wc_status(__entry->status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) __entry->status, __entry->vendor_err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) #define DEFINE_FRWR_DONE_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) DEFINE_EVENT(xprtrdma_frwr_done, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) const struct ib_wc *wc, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) const struct rpcrdma_frwr *frwr \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) TP_ARGS(wc, frwr))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) TRACE_DEFINE_ENUM(DMA_BIDIRECTIONAL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) TRACE_DEFINE_ENUM(DMA_TO_DEVICE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) TRACE_DEFINE_ENUM(DMA_FROM_DEVICE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) TRACE_DEFINE_ENUM(DMA_NONE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) #define xprtrdma_show_direction(x) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) __print_symbolic(x, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) { DMA_BIDIRECTIONAL, "BIDIR" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) { DMA_TO_DEVICE, "TO_DEVICE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) { DMA_FROM_DEVICE, "FROM_DEVICE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) { DMA_NONE, "NONE" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) DECLARE_EVENT_CLASS(xprtrdma_mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) const struct rpcrdma_mr *mr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) TP_ARGS(mr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) __field(u32, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) __entry->mr_id = mr->frwr.fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) __entry->nents = mr->mr_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) __entry->handle = mr->mr_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) __entry->length = mr->mr_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) __entry->offset = mr->mr_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) __entry->dir = mr->mr_dir;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) TP_printk("mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) __entry->mr_id, __entry->nents, __entry->length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) (unsigned long long)__entry->offset, __entry->handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) xprtrdma_show_direction(__entry->dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define DEFINE_MR_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) DEFINE_EVENT(xprtrdma_mr, xprtrdma_mr_##name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) const struct rpcrdma_mr *mr \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) TP_ARGS(mr))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) DECLARE_EVENT_CLASS(xprtrdma_cb_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) const struct rpc_rqst *rqst
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) TP_ARGS(rqst),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) __field(const void *, rqst)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) __entry->rqst = rqst;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) __entry->req = rpcr_to_rdmar(rqst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) __entry->rep = rpcr_to_rdmar(rqst)->rl_reply;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) TP_printk("xid=0x%08x, rqst=%p req=%p rep=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) __entry->xid, __entry->rqst, __entry->req, __entry->rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define DEFINE_CB_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) DEFINE_EVENT(xprtrdma_cb_event, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) const struct rpc_rqst *rqst \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) TP_ARGS(rqst))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) ** Connection events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) TRACE_EVENT(xprtrdma_inline_thresh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) const struct rpcrdma_ep *ep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) TP_ARGS(ep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) __field(unsigned int, inline_send)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) __field(unsigned int, inline_recv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) __field(unsigned int, max_send)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) __field(unsigned int, max_recv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) const struct rdma_cm_id *id = ep->re_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) __entry->inline_send = ep->re_inline_send;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) __entry->inline_recv = ep->re_inline_recv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) __entry->max_send = ep->re_max_inline_send;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) __entry->max_recv = ep->re_max_inline_recv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) memcpy(__entry->srcaddr, &id->route.addr.src_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) sizeof(struct sockaddr_in6));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) memcpy(__entry->dstaddr, &id->route.addr.dst_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) sizeof(struct sockaddr_in6));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) TP_printk("%pISpc -> %pISpc neg send/recv=%u/%u, calc send/recv=%u/%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) __entry->srcaddr, __entry->dstaddr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) __entry->inline_send, __entry->inline_recv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) __entry->max_send, __entry->max_recv
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) DEFINE_CONN_EVENT(connect);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) DEFINE_CONN_EVENT(disconnect);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) TRACE_EVENT(xprtrdma_op_connect,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) unsigned long delay
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) TP_ARGS(r_xprt, delay),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) __field(unsigned long, delay)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) __entry->delay = delay;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) TP_printk("peer=[%s]:%s r_xprt=%p delay=%lu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) __get_str(addr), __get_str(port), __entry->r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) __entry->delay
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) TRACE_EVENT(xprtrdma_op_set_cto,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) unsigned long connect,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) unsigned long reconnect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) TP_ARGS(r_xprt, connect, reconnect),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) __field(unsigned long, connect)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) __field(unsigned long, reconnect)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) __entry->connect = connect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) __entry->reconnect = reconnect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) TP_printk("peer=[%s]:%s r_xprt=%p: connect=%lu reconnect=%lu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) __get_str(addr), __get_str(port), __entry->r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) __entry->connect / HZ, __entry->reconnect / HZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) TRACE_EVENT(xprtrdma_qp_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) const struct rpcrdma_ep *ep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) const struct ib_event *event
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) TP_ARGS(ep, event),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) __field(unsigned long, event)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) __string(name, event->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) __array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) __array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) const struct rdma_cm_id *id = ep->re_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) __entry->event = event->event;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) __assign_str(name, event->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) memcpy(__entry->srcaddr, &id->route.addr.src_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) sizeof(struct sockaddr_in6));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) memcpy(__entry->dstaddr, &id->route.addr.dst_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) sizeof(struct sockaddr_in6));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) TP_printk("%pISpc -> %pISpc device=%s %s (%lu)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) __entry->srcaddr, __entry->dstaddr, __get_str(name),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) rdma_show_ib_event(__entry->event), __entry->event
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) ** Call events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) TRACE_EVENT(xprtrdma_createmrs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) unsigned int count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) TP_ARGS(r_xprt, count),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) __field(unsigned int, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) __entry->count = count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) TP_printk("peer=[%s]:%s r_xprt=%p: created %u MRs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) __get_str(addr), __get_str(port), __entry->r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) __entry->count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) TRACE_EVENT(xprtrdma_mr_get,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) const struct rpcrdma_req *req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) TP_ARGS(req),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) const struct rpc_rqst *rqst = &req->rl_slot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) TP_printk("task:%u@%u xid=0x%08x req=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) __entry->req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) TRACE_EVENT(xprtrdma_nomrs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) const struct rpcrdma_req *req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) TP_ARGS(req),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) const struct rpc_rqst *rqst = &req->rl_slot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) TP_printk("task:%u@%u xid=0x%08x req=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) __entry->req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) DEFINE_RDCH_EVENT(read);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) DEFINE_WRCH_EVENT(write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) DEFINE_WRCH_EVENT(reply);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) TRACE_DEFINE_ENUM(rpcrdma_noch);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) TRACE_DEFINE_ENUM(rpcrdma_noch_pullup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) TRACE_DEFINE_ENUM(rpcrdma_noch_mapped);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) TRACE_DEFINE_ENUM(rpcrdma_readch);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) TRACE_DEFINE_ENUM(rpcrdma_areadch);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) TRACE_DEFINE_ENUM(rpcrdma_writech);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) TRACE_DEFINE_ENUM(rpcrdma_replych);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) #define xprtrdma_show_chunktype(x) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) __print_symbolic(x, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) { rpcrdma_noch, "inline" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) { rpcrdma_noch_pullup, "pullup" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) { rpcrdma_noch_mapped, "mapped" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) { rpcrdma_readch, "read list" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) { rpcrdma_areadch, "*read list" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) { rpcrdma_writech, "write list" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) { rpcrdma_replych, "reply chunk" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) TRACE_EVENT(xprtrdma_marshal,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) const struct rpcrdma_req *req,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) unsigned int rtype,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) unsigned int wtype
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) TP_ARGS(req, rtype, wtype),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) __field(unsigned int, hdrlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) __field(unsigned int, headlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) __field(unsigned int, pagelen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) __field(unsigned int, taillen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) __field(unsigned int, rtype)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) __field(unsigned int, wtype)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) const struct rpc_rqst *rqst = &req->rl_slot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) __entry->hdrlen = req->rl_hdrbuf.len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) __entry->headlen = rqst->rq_snd_buf.head[0].iov_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) __entry->pagelen = rqst->rq_snd_buf.page_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) __entry->taillen = rqst->rq_snd_buf.tail[0].iov_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) __entry->rtype = rtype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) __entry->wtype = wtype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) TP_printk("task:%u@%u xid=0x%08x: hdr=%u xdr=%u/%u/%u %s/%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) __entry->hdrlen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) __entry->headlen, __entry->pagelen, __entry->taillen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) xprtrdma_show_chunktype(__entry->rtype),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) xprtrdma_show_chunktype(__entry->wtype)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) TRACE_EVENT(xprtrdma_marshal_failed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) TP_PROTO(const struct rpc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) int ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) TP_ARGS(rqst, ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) __field(int, ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) __entry->ret = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) TP_printk("task:%u@%u xid=0x%08x: ret=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) __entry->ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) TRACE_EVENT(xprtrdma_prepsend_failed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) TP_PROTO(const struct rpc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) int ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) TP_ARGS(rqst, ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) __field(int, ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) __entry->ret = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) TP_printk("task:%u@%u xid=0x%08x: ret=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) __entry->ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) TRACE_EVENT(xprtrdma_post_send,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) const struct rpcrdma_req *req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) TP_ARGS(req),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) __field(const void *, sc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) __field(int, num_sge)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) __field(int, signaled)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) const struct rpc_rqst *rqst = &req->rl_slot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) __entry->client_id = rqst->rq_task->tk_client ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) rqst->rq_task->tk_client->cl_clid : -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) __entry->sc = req->rl_sendctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) __entry->num_sge = req->rl_wr.num_sge;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) __entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) TP_printk("task:%u@%u req=%p sc=%p (%d SGE%s) %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) __entry->task_id, __entry->client_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) __entry->req, __entry->sc, __entry->num_sge,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) (__entry->num_sge == 1 ? "" : "s"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) (__entry->signaled ? "signaled" : "")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) TRACE_EVENT(xprtrdma_post_recv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) const struct rpcrdma_rep *rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) TP_ARGS(rep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) __entry->rep = rep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) TP_printk("rep=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) __entry->rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) TRACE_EVENT(xprtrdma_post_recvs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) unsigned int count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) TP_ARGS(r_xprt, count, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) __field(unsigned int, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) __field(int, posted)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) __entry->count = count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) __entry->posted = r_xprt->rx_ep->re_receive_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) TP_printk("peer=[%s]:%s r_xprt=%p: %u new recvs, %d active (rc %d)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) __get_str(addr), __get_str(port), __entry->r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) __entry->count, __entry->posted, __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) TRACE_EVENT(xprtrdma_post_linv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) const struct rpcrdma_req *req,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) TP_ARGS(req, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) __entry->xid = be32_to_cpu(req->rl_slot.rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) TP_printk("req=%p xid=0x%08x status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) __entry->req, __entry->xid, __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) ** Completion events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) TRACE_EVENT(xprtrdma_wc_send,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) const struct rpcrdma_sendctx *sc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) const struct ib_wc *wc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) TP_ARGS(sc, wc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) __field(const void *, sc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) __field(unsigned int, unmap_count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) __field(unsigned int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) __field(unsigned int, vendor_err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) __entry->req = sc->sc_req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) __entry->sc = sc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) __entry->unmap_count = sc->sc_unmap_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) __entry->status = wc->status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) __entry->vendor_err = __entry->status ? wc->vendor_err : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) TP_printk("req=%p sc=%p unmapped=%u: %s (%u/0x%x)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) __entry->req, __entry->sc, __entry->unmap_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) rdma_show_wc_status(__entry->status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) __entry->status, __entry->vendor_err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) TRACE_EVENT(xprtrdma_wc_receive,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) const struct ib_wc *wc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) TP_ARGS(wc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) __field(u32, byte_len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) __field(unsigned int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) __field(u32, vendor_err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) __entry->rep = container_of(wc->wr_cqe, struct rpcrdma_rep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) rr_cqe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) __entry->status = wc->status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) if (wc->status) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) __entry->byte_len = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) __entry->vendor_err = wc->vendor_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) __entry->byte_len = wc->byte_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) __entry->vendor_err = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) TP_printk("rep=%p %u bytes: %s (%u/0x%x)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) __entry->rep, __entry->byte_len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) rdma_show_wc_status(__entry->status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) __entry->status, __entry->vendor_err
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_fastreg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_done);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) TRACE_EVENT(xprtrdma_frwr_alloc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) const struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) int rc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) TP_ARGS(mr, rc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) __field(int, rc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) __entry->mr_id = mr->frwr.fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) __entry->rc = rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) TP_printk("mr.id=%u: rc=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) __entry->mr_id, __entry->rc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) TRACE_EVENT(xprtrdma_frwr_dereg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) const struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) int rc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) TP_ARGS(mr, rc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) __field(u32, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) __field(int, rc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) __entry->mr_id = mr->frwr.fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) __entry->nents = mr->mr_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) __entry->handle = mr->mr_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) __entry->length = mr->mr_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) __entry->offset = mr->mr_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) __entry->dir = mr->mr_dir;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) __entry->rc = rc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) TP_printk("mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s): rc=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) __entry->mr_id, __entry->nents, __entry->length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) (unsigned long long)__entry->offset, __entry->handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) xprtrdma_show_direction(__entry->dir),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) __entry->rc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) TRACE_EVENT(xprtrdma_frwr_sgerr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) const struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) int sg_nents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) TP_ARGS(mr, sg_nents),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) __field(u64, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) __field(u32, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) __entry->mr_id = mr->frwr.fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) __entry->addr = mr->mr_sg->dma_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) __entry->dir = mr->mr_dir;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) __entry->nents = sg_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) TP_printk("mr.id=%u DMA addr=0x%llx (%s) sg_nents=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) __entry->mr_id, __entry->addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) xprtrdma_show_direction(__entry->dir),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) __entry->nents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) TRACE_EVENT(xprtrdma_frwr_maperr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) const struct rpcrdma_mr *mr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) int num_mapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) TP_ARGS(mr, num_mapped),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) __field(u32, mr_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) __field(u64, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) __field(u32, dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) __field(int, num_mapped)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) __field(int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) __entry->mr_id = mr->frwr.fr_mr->res.id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) __entry->addr = mr->mr_sg->dma_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) __entry->dir = mr->mr_dir;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) __entry->num_mapped = num_mapped;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) __entry->nents = mr->mr_nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) TP_printk("mr.id=%u DMA addr=0x%llx (%s) nents=%d of %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) __entry->mr_id, __entry->addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) xprtrdma_show_direction(__entry->dir),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) __entry->num_mapped, __entry->nents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) DEFINE_MR_EVENT(localinv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) DEFINE_MR_EVENT(map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) DEFINE_MR_EVENT(unmap);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) DEFINE_MR_EVENT(reminv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) DEFINE_MR_EVENT(recycle);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) TRACE_EVENT(xprtrdma_dma_maperr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) u64 addr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) TP_ARGS(addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) __field(u64, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) __entry->addr = addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) TP_printk("dma addr=0x%llx\n", __entry->addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) ** Reply events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) TRACE_EVENT(xprtrdma_reply,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) const struct rpc_task *task,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) const struct rpcrdma_rep *rep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) const struct rpcrdma_req *req,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) unsigned int credits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) TP_ARGS(task, rep, req, credits),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) __field(const void *, req)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) __field(unsigned int, credits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) __entry->task_id = task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) __entry->client_id = task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) __entry->rep = rep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) __entry->req = req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) __entry->xid = be32_to_cpu(rep->rr_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) __entry->credits = credits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) TP_printk("task:%u@%u xid=0x%08x, %u credits, rep=%p -> req=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) __entry->credits, __entry->rep, __entry->req
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) TRACE_EVENT(xprtrdma_defer_cmp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) const struct rpcrdma_rep *rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) TP_ARGS(rep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) __entry->task_id = rep->rr_rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) __entry->client_id = rep->rr_rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) __entry->rep = rep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) __entry->xid = be32_to_cpu(rep->rr_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) TP_printk("task:%u@%u xid=0x%08x rep=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) __entry->rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) DEFINE_REPLY_EVENT(xprtrdma_reply_vers);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) DEFINE_REPLY_EVENT(xprtrdma_reply_rqst);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) DEFINE_REPLY_EVENT(xprtrdma_reply_short);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) DEFINE_REPLY_EVENT(xprtrdma_reply_hdr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) TRACE_EVENT(xprtrdma_fixup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) const struct rpc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) unsigned long fixup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) TP_ARGS(rqst, fixup),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) __field(unsigned long, fixup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) __field(size_t, headlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) __field(unsigned int, pagelen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) __field(size_t, taillen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) __entry->fixup = fixup;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) __entry->headlen = rqst->rq_rcv_buf.head[0].iov_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) __entry->pagelen = rqst->rq_rcv_buf.page_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) __entry->taillen = rqst->rq_rcv_buf.tail[0].iov_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) TP_printk("task:%u@%u fixup=%lu xdr=%zu/%u/%zu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) __entry->task_id, __entry->client_id, __entry->fixup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) __entry->headlen, __entry->pagelen, __entry->taillen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) TRACE_EVENT(xprtrdma_decode_seg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) u32 handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) u32 length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) u64 offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) TP_ARGS(handle, length, offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) __entry->handle = handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) __entry->length = length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) __entry->offset = offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) TP_printk("%u@0x%016llx:0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) __entry->length, (unsigned long long)__entry->offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) __entry->handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) ** Callback events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) TRACE_EVENT(xprtrdma_cb_setup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) const struct rpcrdma_xprt *r_xprt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) unsigned int reqs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) TP_ARGS(r_xprt, reqs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) __field(const void *, r_xprt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) __field(unsigned int, reqs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) __string(addr, rpcrdma_addrstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) __string(port, rpcrdma_portstr(r_xprt))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) __entry->r_xprt = r_xprt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) __entry->reqs = reqs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) __assign_str(addr, rpcrdma_addrstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) __assign_str(port, rpcrdma_portstr(r_xprt));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) TP_printk("peer=[%s]:%s r_xprt=%p: %u reqs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) __get_str(addr), __get_str(port),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) __entry->r_xprt, __entry->reqs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) DEFINE_CB_EVENT(xprtrdma_cb_call);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) DEFINE_CB_EVENT(xprtrdma_cb_reply);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) TRACE_EVENT(xprtrdma_leaked_rep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) const struct rpc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) const struct rpcrdma_rep *rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) TP_ARGS(rqst, rep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) __field(unsigned int, task_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) __field(unsigned int, client_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) __field(const void *, rep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) __entry->task_id = rqst->rq_task->tk_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) __entry->client_id = rqst->rq_task->tk_client->cl_clid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) __entry->xid = be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) __entry->rep = rep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) TP_printk("task:%u@%u xid=0x%08x rep=%p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) __entry->task_id, __entry->client_id, __entry->xid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) __entry->rep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) ** Server-side RPC/RDMA events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) DECLARE_EVENT_CLASS(svcrdma_accept_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) long status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) TP_ARGS(rdma, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) __field(long, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) TP_printk("addr=%s status=%ld",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) __get_str(addr), __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) #define DEFINE_ACCEPT_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) DEFINE_EVENT(svcrdma_accept_class, svcrdma_##name##_err, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) const struct svcxprt_rdma *rdma, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) long status \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) TP_ARGS(rdma, status))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) DEFINE_ACCEPT_EVENT(pd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) DEFINE_ACCEPT_EVENT(qp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) DEFINE_ACCEPT_EVENT(fabric);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) DEFINE_ACCEPT_EVENT(initdepth);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) DEFINE_ACCEPT_EVENT(accept);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) TRACE_DEFINE_ENUM(RDMA_MSG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) TRACE_DEFINE_ENUM(RDMA_NOMSG);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) TRACE_DEFINE_ENUM(RDMA_MSGP);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) TRACE_DEFINE_ENUM(RDMA_DONE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) TRACE_DEFINE_ENUM(RDMA_ERROR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) #define show_rpcrdma_proc(x) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) __print_symbolic(x, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) { RDMA_MSG, "RDMA_MSG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) { RDMA_NOMSG, "RDMA_NOMSG" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) { RDMA_MSGP, "RDMA_MSGP" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) { RDMA_DONE, "RDMA_DONE" }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) { RDMA_ERROR, "RDMA_ERROR" })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) TRACE_EVENT(svcrdma_decode_rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) const struct svc_rdma_recv_ctxt *ctxt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) __be32 *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) unsigned int hdrlen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) TP_ARGS(ctxt, p, hdrlen),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) __field(u32, vers)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) __field(u32, proc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) __field(u32, credits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) __field(unsigned int, hdrlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) __entry->cq_id = ctxt->rc_cid.ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) __entry->completion_id = ctxt->rc_cid.ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) __entry->xid = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) __entry->vers = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) __entry->credits = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) __entry->proc = be32_to_cpup(p);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) __entry->hdrlen = hdrlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) TP_printk("cq.id=%u cid=%d xid=0x%08x vers=%u credits=%u proc=%s hdrlen=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) __entry->xid, __entry->vers, __entry->credits,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) show_rpcrdma_proc(__entry->proc), __entry->hdrlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) TRACE_EVENT(svcrdma_decode_short_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) const struct svc_rdma_recv_ctxt *ctxt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) unsigned int hdrlen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) TP_ARGS(ctxt, hdrlen),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) __field(unsigned int, hdrlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) __entry->cq_id = ctxt->rc_cid.ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) __entry->completion_id = ctxt->rc_cid.ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) __entry->hdrlen = hdrlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) TP_printk("cq.id=%u cid=%d hdrlen=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) __entry->hdrlen)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) DECLARE_EVENT_CLASS(svcrdma_badreq_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) const struct svc_rdma_recv_ctxt *ctxt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) __be32 *p
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) TP_ARGS(ctxt, p),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) __field(u32, vers)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) __field(u32, proc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) __field(u32, credits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) __entry->cq_id = ctxt->rc_cid.ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) __entry->completion_id = ctxt->rc_cid.ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) __entry->xid = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) __entry->vers = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) __entry->credits = be32_to_cpup(p++);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) __entry->proc = be32_to_cpup(p);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) TP_printk("cq.id=%u cid=%d xid=0x%08x vers=%u credits=%u proc=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) __entry->xid, __entry->vers, __entry->credits, __entry->proc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) #define DEFINE_BADREQ_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) DEFINE_EVENT(svcrdma_badreq_event, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) svcrdma_decode_##name##_err, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) const struct svc_rdma_recv_ctxt *ctxt, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) __be32 *p \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) TP_ARGS(ctxt, p))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) DEFINE_BADREQ_EVENT(badvers);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) DEFINE_BADREQ_EVENT(drop);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) DEFINE_BADREQ_EVENT(badproc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) DEFINE_BADREQ_EVENT(parse);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) DECLARE_EVENT_CLASS(svcrdma_segment_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) u32 handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) u32 length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) u64 offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) TP_ARGS(handle, length, offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) __field(u32, handle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) __field(u64, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) __entry->handle = handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) __entry->length = length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) __entry->offset = offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) TP_printk("%u@0x%016llx:0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) __entry->length, (unsigned long long)__entry->offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) __entry->handle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) #define DEFINE_SEGMENT_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) DEFINE_EVENT(svcrdma_segment_event, svcrdma_##name,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) u32 handle, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) u32 length, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) u64 offset \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) TP_ARGS(handle, length, offset))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) DEFINE_SEGMENT_EVENT(decode_wseg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) DEFINE_SEGMENT_EVENT(encode_rseg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) DEFINE_SEGMENT_EVENT(send_rseg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) DEFINE_SEGMENT_EVENT(encode_wseg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) DEFINE_SEGMENT_EVENT(send_wseg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) DECLARE_EVENT_CLASS(svcrdma_chunk_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) u32 length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) TP_ARGS(length),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) __entry->length = length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) TP_printk("length=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) __entry->length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) #define DEFINE_CHUNK_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) DEFINE_EVENT(svcrdma_chunk_event, svcrdma_##name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) u32 length \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) TP_ARGS(length))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) DEFINE_CHUNK_EVENT(send_pzr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) DEFINE_CHUNK_EVENT(encode_write_chunk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) DEFINE_CHUNK_EVENT(send_write_chunk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) DEFINE_CHUNK_EVENT(encode_read_chunk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) DEFINE_CHUNK_EVENT(send_reply_chunk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) TRACE_EVENT(svcrdma_send_read_chunk,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) u32 length,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) u32 position
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) TP_ARGS(length, position),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) __field(u32, position)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) __entry->length = length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) __entry->position = position;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) TP_printk("length=%u position=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) __entry->length, __entry->position
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) DECLARE_EVENT_CLASS(svcrdma_error_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) __be32 xid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) TP_ARGS(xid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) __entry->xid = be32_to_cpu(xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) TP_printk("xid=0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) __entry->xid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) #define DEFINE_ERROR_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) DEFINE_EVENT(svcrdma_error_event, svcrdma_err_##name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) __be32 xid \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) TP_ARGS(xid))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) DEFINE_ERROR_EVENT(vers);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) DEFINE_ERROR_EVENT(chunk);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) ** Server-side RDMA API events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) **/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) DECLARE_EVENT_CLASS(svcrdma_dma_map_class,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) u64 dma_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) u32 length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) TP_ARGS(rdma, dma_addr, length),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) __field(u64, dma_addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) __field(u32, length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) __string(device, rdma->sc_cm_id->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) __entry->dma_addr = dma_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) __entry->length = length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) __assign_str(device, rdma->sc_cm_id->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) TP_printk("addr=%s device=%s dma_addr=%llu length=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) __get_str(addr), __get_str(device),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) __entry->dma_addr, __entry->length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) #define DEFINE_SVC_DMA_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) DEFINE_EVENT(svcrdma_dma_map_class, svcrdma_##name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) const struct svcxprt_rdma *rdma,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) u64 dma_addr, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) u32 length \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) TP_ARGS(rdma, dma_addr, length))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) DEFINE_SVC_DMA_EVENT(dma_map_page);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) DEFINE_SVC_DMA_EVENT(dma_unmap_page);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) TRACE_EVENT(svcrdma_dma_map_rw_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) unsigned int nents,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) TP_ARGS(rdma, nents, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) __field(unsigned int, nents)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) __string(device, rdma->sc_cm_id->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) __entry->nents = nents;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) __assign_str(device, rdma->sc_cm_id->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) TP_printk("addr=%s device=%s nents=%u status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) __get_str(addr), __get_str(device), __entry->nents,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) TRACE_EVENT(svcrdma_no_rwctx_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) unsigned int num_sges
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) TP_ARGS(rdma, num_sges),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) __field(unsigned int, num_sges)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) __string(device, rdma->sc_cm_id->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) __entry->num_sges = num_sges;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) __assign_str(device, rdma->sc_cm_id->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) TP_printk("addr=%s device=%s num_sges=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) __get_str(addr), __get_str(device), __entry->num_sges
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) TRACE_EVENT(svcrdma_page_overrun_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) const struct svc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) unsigned int pageno
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) TP_ARGS(rdma, rqst, pageno),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) __field(unsigned int, pageno)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) __string(device, rdma->sc_cm_id->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) __entry->pageno = pageno;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) __entry->xid = __be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) __assign_str(device, rdma->sc_cm_id->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) TP_printk("addr=%s device=%s xid=0x%08x pageno=%u", __get_str(addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) __get_str(device), __entry->xid, __entry->pageno
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) TRACE_EVENT(svcrdma_small_wrch_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) unsigned int remaining,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) unsigned int seg_no,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) unsigned int num_segs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) TP_ARGS(rdma, remaining, seg_no, num_segs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) __field(unsigned int, remaining)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) __field(unsigned int, seg_no)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) __field(unsigned int, num_segs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) __string(device, rdma->sc_cm_id->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) __entry->remaining = remaining;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) __entry->seg_no = seg_no;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) __entry->num_segs = num_segs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) __assign_str(device, rdma->sc_cm_id->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) TP_printk("addr=%s device=%s remaining=%u seg_no=%u num_segs=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) __get_str(addr), __get_str(device), __entry->remaining,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) __entry->seg_no, __entry->num_segs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) TRACE_EVENT(svcrdma_send_pullup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) unsigned int len
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) TP_ARGS(len),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) __field(unsigned int, len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) __entry->len = len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) TP_printk("len=%u", __entry->len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) TRACE_EVENT(svcrdma_send_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) const struct svc_rqst *rqst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) TP_ARGS(rqst, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) __field(u32, xid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) __string(addr, rqst->rq_xprt->xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) __entry->xid = __be32_to_cpu(rqst->rq_xid);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) TP_printk("addr=%s xid=0x%08x status=%d", __get_str(addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) __entry->xid, __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) TRACE_EVENT(svcrdma_post_send,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) const struct svc_rdma_send_ctxt *ctxt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) TP_ARGS(ctxt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) __field(unsigned int, num_sge)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) __field(u32, inv_rkey)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) const struct ib_send_wr *wr = &ctxt->sc_send_wr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) __entry->cq_id = ctxt->sc_cid.ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) __entry->completion_id = ctxt->sc_cid.ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) __entry->num_sge = wr->num_sge;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) __entry->inv_rkey = (wr->opcode == IB_WR_SEND_WITH_INV) ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) wr->ex.invalidate_rkey : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) TP_printk("cq_id=%u cid=%d num_sge=%u inv_rkey=0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) __entry->num_sge, __entry->inv_rkey
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) DEFINE_COMPLETION_EVENT(svcrdma_wc_send);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) TRACE_EVENT(svcrdma_post_recv,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) const struct svc_rdma_recv_ctxt *ctxt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) TP_ARGS(ctxt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) __entry->cq_id = ctxt->rc_cid.ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789) __entry->completion_id = ctxt->rc_cid.ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) TP_printk("cq.id=%d cid=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) __entry->cq_id, __entry->completion_id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) DEFINE_COMPLETION_EVENT(svcrdma_wc_receive);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) TRACE_EVENT(svcrdma_rq_post_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) TP_ARGS(rdma, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) TP_printk("addr=%s status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) __get_str(addr), __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) TRACE_EVENT(svcrdma_post_chunk,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) const struct rpc_rdma_cid *cid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) int sqecount
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828) TP_ARGS(cid, sqecount),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) __field(u32, cq_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) __field(int, completion_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) __field(int, sqecount)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) __entry->cq_id = cid->ci_queue_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) __entry->completion_id = cid->ci_completion_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839) __entry->sqecount = sqecount;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) TP_printk("cq.id=%u cid=%d sqecount=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) __entry->cq_id, __entry->completion_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) __entry->sqecount
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) DEFINE_COMPLETION_EVENT(svcrdma_wc_read);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849) DEFINE_COMPLETION_EVENT(svcrdma_wc_write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) TRACE_EVENT(svcrdma_qp_error,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) const struct ib_event *event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) const struct sockaddr *sap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) TP_ARGS(event, sap),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) __field(unsigned int, event)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) __string(device, event->device->name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862) __array(__u8, addr, INET6_ADDRSTRLEN + 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) __entry->event = event->event;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) __assign_str(device, event->device->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) snprintf(__entry->addr, sizeof(__entry->addr) - 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) "%pISpc", sap);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) TP_printk("addr=%s dev=%s event=%s (%u)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) __entry->addr, __get_str(device),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) rdma_show_ib_event(__entry->event), __entry->event
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) DECLARE_EVENT_CLASS(svcrdma_sendqueue_event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) const struct svcxprt_rdma *rdma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) TP_ARGS(rdma),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) __field(int, avail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) __field(int, depth)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892) __entry->avail = atomic_read(&rdma->sc_sq_avail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) __entry->depth = rdma->sc_sq_depth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) TP_printk("addr=%s sc_sq_avail=%d/%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) __get_str(addr), __entry->avail, __entry->depth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) #define DEFINE_SQ_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) DEFINE_EVENT(svcrdma_sendqueue_event, svcrdma_sq_##name,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) TP_PROTO( \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) const struct svcxprt_rdma *rdma \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) ), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) TP_ARGS(rdma))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) DEFINE_SQ_EVENT(full);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910) DEFINE_SQ_EVENT(retry);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) TRACE_EVENT(svcrdma_sq_post_err,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) TP_PROTO(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) const struct svcxprt_rdma *rdma,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) int status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) TP_ARGS(rdma, status),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) __field(int, avail)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) __field(int, depth)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) __field(int, status)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) __string(addr, rdma->sc_xprt.xpt_remotebuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) __entry->avail = atomic_read(&rdma->sc_sq_avail);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) __entry->depth = rdma->sc_sq_depth;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) __entry->status = status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) __assign_str(addr, rdma->sc_xprt.xpt_remotebuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) TP_printk("addr=%s sc_sq_avail=%d/%d status=%d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) __get_str(addr), __entry->avail, __entry->depth,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) __entry->status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) #endif /* _TRACE_RPCRDMA_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) #include <trace/define_trace.h>