brintos

brintos / linux-shallow public Read only

0
0
Text · 12.4 KiB · d92691c Raw
386 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */2 3/*4 * Copyright (c) 2018 Intel Corporation.  All rights reserved.5 */6 7#undef TRACE_SYSTEM8#define TRACE_SYSTEM ib_mad9 10#if !defined(_TRACE_IB_MAD_H) || defined(TRACE_HEADER_MULTI_READ)11#define _TRACE_IB_MAD_H12 13#include <linux/tracepoint.h>14#include <rdma/ib_mad.h>15 16#ifdef CONFIG_TRACEPOINTS17struct trace_event_raw_ib_mad_send_template;18static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr,19			  struct ib_mad_qp_info *qp_info,20			  struct trace_event_raw_ib_mad_send_template *entry);21#endif22 23DECLARE_EVENT_CLASS(ib_mad_send_template,24	TP_PROTO(struct ib_mad_send_wr_private *wr,25		 struct ib_mad_qp_info *qp_info),26	TP_ARGS(wr, qp_info),27 28	TP_STRUCT__entry(29		__field(u8,             base_version)30		__field(u8,             mgmt_class)31		__field(u8,             class_version)32		__field(u8,             port_num)33		__field(u32,            qp_num)34		__field(u8,             method)35		__field(u8,             sl)36		__field(u16,            attr_id)37		__field(u32,            attr_mod)38		__field(u64,            wrtid)39		__field(u64,            tid)40		__field(u16,            status)41		__field(u16,            class_specific)42		__field(u32,            length)43		__field(u32,            dlid)44		__field(u32,            rqpn)45		__field(u32,            rqkey)46		__field(u32,            dev_index)47		__field(void *,         agent_priv)48		__field(unsigned long,  timeout)49		__field(int,            retries_left)50		__field(int,            max_retries)51		__field(int,            retry)52	),53 54	TP_fast_assign(55		__entry->dev_index = wr->mad_agent_priv->agent.device->index;56		__entry->port_num = wr->mad_agent_priv->agent.port_num;57		__entry->qp_num = wr->mad_agent_priv->qp_info->qp->qp_num;58		__entry->agent_priv = wr->mad_agent_priv;59		__entry->wrtid = wr->tid;60		__entry->max_retries = wr->max_retries;61		__entry->retries_left = wr->retries_left;62		__entry->retry = wr->retry;63		__entry->timeout = wr->timeout;64		__entry->length = wr->send_buf.hdr_len +65				  wr->send_buf.data_len;66		__entry->base_version =67			((struct ib_mad_hdr *)wr->send_buf.mad)->base_version;68		__entry->mgmt_class =69			((struct ib_mad_hdr *)wr->send_buf.mad)->mgmt_class;70		__entry->class_version =71			((struct ib_mad_hdr *)wr->send_buf.mad)->class_version;72		__entry->method =73			((struct ib_mad_hdr *)wr->send_buf.mad)->method;74		__entry->status =75			((struct ib_mad_hdr *)wr->send_buf.mad)->status;76		__entry->class_specific =77			((struct ib_mad_hdr *)wr->send_buf.mad)->class_specific;78		__entry->tid = ((struct ib_mad_hdr *)wr->send_buf.mad)->tid;79		__entry->attr_id =80			((struct ib_mad_hdr *)wr->send_buf.mad)->attr_id;81		__entry->attr_mod =82			((struct ib_mad_hdr *)wr->send_buf.mad)->attr_mod;83		create_mad_addr_info(wr, qp_info, __entry);84	),85 86	TP_printk("%d:%d QP%d agent %p: " \87		  "wrtid 0x%llx; %d/%d retries(%d); timeout %lu length %d : " \88		  "hdr : base_ver 0x%x class 0x%x class_ver 0x%x " \89		  "method 0x%x status 0x%x class_specific 0x%x tid 0x%llx " \90		  "attr_id 0x%x attr_mod 0x%x  => dlid 0x%08x sl %d "\91		  "rpqn 0x%x rqpkey 0x%x",92		__entry->dev_index, __entry->port_num, __entry->qp_num,93		__entry->agent_priv, be64_to_cpu(__entry->wrtid),94		__entry->retries_left, __entry->max_retries,95		__entry->retry, __entry->timeout, __entry->length,96		__entry->base_version, __entry->mgmt_class,97		__entry->class_version,98		__entry->method, be16_to_cpu(__entry->status),99		be16_to_cpu(__entry->class_specific),100		be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id),101		be32_to_cpu(__entry->attr_mod),102		be32_to_cpu(__entry->dlid), __entry->sl,103		__entry->rqpn, __entry->rqkey104	)105);106 107DEFINE_EVENT(ib_mad_send_template, ib_mad_error_handler,108	TP_PROTO(struct ib_mad_send_wr_private *wr,109		 struct ib_mad_qp_info *qp_info),110	TP_ARGS(wr, qp_info));111DEFINE_EVENT(ib_mad_send_template, ib_mad_ib_send_mad,112	TP_PROTO(struct ib_mad_send_wr_private *wr,113		 struct ib_mad_qp_info *qp_info),114	TP_ARGS(wr, qp_info));115DEFINE_EVENT(ib_mad_send_template, ib_mad_send_done_resend,116	TP_PROTO(struct ib_mad_send_wr_private *wr,117		 struct ib_mad_qp_info *qp_info),118	TP_ARGS(wr, qp_info));119 120TRACE_EVENT(ib_mad_send_done_handler,121	TP_PROTO(struct ib_mad_send_wr_private *wr, struct ib_wc *wc),122	TP_ARGS(wr, wc),123 124	TP_STRUCT__entry(125		__field(u8,             port_num)126		__field(u8,             base_version)127		__field(u8,             mgmt_class)128		__field(u8,             class_version)129		__field(u32,            qp_num)130		__field(u64,            wrtid)131		__field(u16,            status)132		__field(u16,            wc_status)133		__field(u32,            length)134		__field(void *,         agent_priv)135		__field(unsigned long,  timeout)136		__field(u32,            dev_index)137		__field(int,            retries_left)138		__field(int,            max_retries)139		__field(int,            retry)140		__field(u8,             method)141	),142 143	TP_fast_assign(144		__entry->dev_index = wr->mad_agent_priv->agent.device->index;145		__entry->port_num = wr->mad_agent_priv->agent.port_num;146		__entry->qp_num = wr->mad_agent_priv->qp_info->qp->qp_num;147		__entry->agent_priv = wr->mad_agent_priv;148		__entry->wrtid = wr->tid;149		__entry->max_retries = wr->max_retries;150		__entry->retries_left = wr->retries_left;151		__entry->retry = wr->retry;152		__entry->timeout = wr->timeout;153		__entry->base_version =154			((struct ib_mad_hdr *)wr->send_buf.mad)->base_version;155		__entry->mgmt_class =156			((struct ib_mad_hdr *)wr->send_buf.mad)->mgmt_class;157		__entry->class_version =158			((struct ib_mad_hdr *)wr->send_buf.mad)->class_version;159		__entry->method =160			((struct ib_mad_hdr *)wr->send_buf.mad)->method;161		__entry->status =162			((struct ib_mad_hdr *)wr->send_buf.mad)->status;163		__entry->wc_status = wc->status;164		__entry->length = wc->byte_len;165	),166 167	TP_printk("%d:%d QP%d : SEND WC Status %d : agent %p: " \168		  "wrtid 0x%llx %d/%d retries(%d) timeout %lu length %d: " \169		  "hdr : base_ver 0x%x class 0x%x class_ver 0x%x " \170		  "method 0x%x status 0x%x",171		__entry->dev_index, __entry->port_num, __entry->qp_num,172		__entry->wc_status,173		__entry->agent_priv, be64_to_cpu(__entry->wrtid),174		__entry->retries_left, __entry->max_retries,175		__entry->retry, __entry->timeout,176		__entry->length,177		__entry->base_version, __entry->mgmt_class,178		__entry->class_version, __entry->method,179		be16_to_cpu(__entry->status)180	)181);182 183TRACE_EVENT(ib_mad_recv_done_handler,184	TP_PROTO(struct ib_mad_qp_info *qp_info, struct ib_wc *wc,185		 struct ib_mad_hdr *mad_hdr),186	TP_ARGS(qp_info, wc, mad_hdr),187 188	TP_STRUCT__entry(189		__field(u8,             base_version)190		__field(u8,             mgmt_class)191		__field(u8,             class_version)192		__field(u8,             port_num)193		__field(u32,            qp_num)194		__field(u16,            status)195		__field(u16,            class_specific)196		__field(u32,            length)197		__field(u64,            tid)198		__field(u8,             method)199		__field(u8,             sl)200		__field(u16,            attr_id)201		__field(u32,            attr_mod)202		__field(u16,            src_qp)203		__field(u16,            wc_status)204		__field(u32,            slid)205		__field(u32,            dev_index)206	),207 208	TP_fast_assign(209		__entry->dev_index = qp_info->port_priv->device->index;210		__entry->port_num = qp_info->port_priv->port_num;211		__entry->qp_num = qp_info->qp->qp_num;212		__entry->length = wc->byte_len;213		__entry->base_version = mad_hdr->base_version;214		__entry->mgmt_class = mad_hdr->mgmt_class;215		__entry->class_version = mad_hdr->class_version;216		__entry->method = mad_hdr->method;217		__entry->status = mad_hdr->status;218		__entry->class_specific = mad_hdr->class_specific;219		__entry->tid = mad_hdr->tid;220		__entry->attr_id = mad_hdr->attr_id;221		__entry->attr_mod = mad_hdr->attr_mod;222		__entry->slid = wc->slid;223		__entry->src_qp = wc->src_qp;224		__entry->sl = wc->sl;225		__entry->wc_status = wc->status;226	),227 228	TP_printk("%d:%d QP%d : RECV WC Status %d : length %d : hdr : " \229		  "base_ver 0x%02x class 0x%02x class_ver 0x%02x " \230		  "method 0x%02x status 0x%04x class_specific 0x%04x " \231		  "tid 0x%016llx attr_id 0x%04x attr_mod 0x%08x " \232		  "slid 0x%08x src QP%d, sl %d",233		__entry->dev_index, __entry->port_num, __entry->qp_num,234		__entry->wc_status,235		__entry->length,236		__entry->base_version, __entry->mgmt_class,237		__entry->class_version, __entry->method,238		be16_to_cpu(__entry->status),239		be16_to_cpu(__entry->class_specific),240		be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id),241		be32_to_cpu(__entry->attr_mod),242		__entry->slid, __entry->src_qp, __entry->sl243	)244);245 246DECLARE_EVENT_CLASS(ib_mad_agent_template,247	TP_PROTO(struct ib_mad_agent_private *agent),248	TP_ARGS(agent),249 250	TP_STRUCT__entry(251		__field(u32,            dev_index)252		__field(u32,            hi_tid)253		__field(u8,             port_num)254		__field(u8,             mgmt_class)255		__field(u8,             mgmt_class_version)256	),257 258	TP_fast_assign(259		__entry->dev_index = agent->agent.device->index;260		__entry->port_num = agent->agent.port_num;261		__entry->hi_tid = agent->agent.hi_tid;262 263		if (agent->reg_req) {264			__entry->mgmt_class = agent->reg_req->mgmt_class;265			__entry->mgmt_class_version =266				agent->reg_req->mgmt_class_version;267		} else {268			__entry->mgmt_class = 0;269			__entry->mgmt_class_version = 0;270		}271	),272 273	TP_printk("%d:%d mad agent : hi_tid 0x%08x class 0x%02x class_ver 0x%02x",274		__entry->dev_index, __entry->port_num,275		__entry->hi_tid, __entry->mgmt_class,276		__entry->mgmt_class_version277	)278);279DEFINE_EVENT(ib_mad_agent_template, ib_mad_recv_done_agent,280	TP_PROTO(struct ib_mad_agent_private *agent),281	TP_ARGS(agent));282DEFINE_EVENT(ib_mad_agent_template, ib_mad_send_done_agent,283	TP_PROTO(struct ib_mad_agent_private *agent),284	TP_ARGS(agent));285DEFINE_EVENT(ib_mad_agent_template, ib_mad_create_agent,286	TP_PROTO(struct ib_mad_agent_private *agent),287	TP_ARGS(agent));288DEFINE_EVENT(ib_mad_agent_template, ib_mad_unregister_agent,289	TP_PROTO(struct ib_mad_agent_private *agent),290	TP_ARGS(agent));291 292 293 294DECLARE_EVENT_CLASS(ib_mad_opa_smi_template,295	TP_PROTO(struct opa_smp *smp),296	TP_ARGS(smp),297 298	TP_STRUCT__entry(299		__field(u64,            mkey)300		__field(u32,            dr_slid)301		__field(u32,            dr_dlid)302		__field(u8,             hop_ptr)303		__field(u8,             hop_cnt)304		__array(u8,             initial_path, OPA_SMP_MAX_PATH_HOPS)305		__array(u8,             return_path, OPA_SMP_MAX_PATH_HOPS)306	),307 308	TP_fast_assign(309		__entry->hop_ptr = smp->hop_ptr;310		__entry->hop_cnt = smp->hop_cnt;311		__entry->mkey = smp->mkey;312		__entry->dr_slid = smp->route.dr.dr_slid;313		__entry->dr_dlid = smp->route.dr.dr_dlid;314		memcpy(__entry->initial_path, smp->route.dr.initial_path,315			OPA_SMP_MAX_PATH_HOPS);316		memcpy(__entry->return_path, smp->route.dr.return_path,317			OPA_SMP_MAX_PATH_HOPS);318	),319 320	TP_printk("OPA SMP: hop_ptr %d hop_cnt %d " \321		  "mkey 0x%016llx dr_slid 0x%08x dr_dlid 0x%08x " \322		  "initial_path %*ph return_path %*ph ",323		__entry->hop_ptr, __entry->hop_cnt,324		be64_to_cpu(__entry->mkey), be32_to_cpu(__entry->dr_slid),325		be32_to_cpu(__entry->dr_dlid),326		OPA_SMP_MAX_PATH_HOPS, __entry->initial_path,327		OPA_SMP_MAX_PATH_HOPS, __entry->return_path328	)329);330 331DEFINE_EVENT(ib_mad_opa_smi_template, ib_mad_handle_opa_smi,332	TP_PROTO(struct opa_smp *smp),333	TP_ARGS(smp));334DEFINE_EVENT(ib_mad_opa_smi_template, ib_mad_handle_out_opa_smi,335	TP_PROTO(struct opa_smp *smp),336	TP_ARGS(smp));337 338 339DECLARE_EVENT_CLASS(ib_mad_opa_ib_template,340	TP_PROTO(struct ib_smp *smp),341	TP_ARGS(smp),342 343	TP_STRUCT__entry(344		__field(u64,            mkey)345		__field(u32,            dr_slid)346		__field(u32,            dr_dlid)347		__field(u8,             hop_ptr)348		__field(u8,             hop_cnt)349		__array(u8,             initial_path, IB_SMP_MAX_PATH_HOPS)350		__array(u8,             return_path, IB_SMP_MAX_PATH_HOPS)351	),352 353	TP_fast_assign(354		__entry->hop_ptr = smp->hop_ptr;355		__entry->hop_cnt = smp->hop_cnt;356		__entry->mkey = smp->mkey;357		__entry->dr_slid = smp->dr_slid;358		__entry->dr_dlid = smp->dr_dlid;359		memcpy(__entry->initial_path, smp->initial_path,360			IB_SMP_MAX_PATH_HOPS);361		memcpy(__entry->return_path, smp->return_path,362			IB_SMP_MAX_PATH_HOPS);363	),364 365	TP_printk("OPA SMP: hop_ptr %d hop_cnt %d " \366		  "mkey 0x%016llx dr_slid 0x%04x dr_dlid 0x%04x " \367		  "initial_path %*ph return_path %*ph ",368		__entry->hop_ptr, __entry->hop_cnt,369		be64_to_cpu(__entry->mkey), be16_to_cpu(__entry->dr_slid),370		be16_to_cpu(__entry->dr_dlid),371		IB_SMP_MAX_PATH_HOPS, __entry->initial_path,372		IB_SMP_MAX_PATH_HOPS, __entry->return_path373	)374);375 376DEFINE_EVENT(ib_mad_opa_ib_template, ib_mad_handle_ib_smi,377	TP_PROTO(struct ib_smp *smp),378	TP_ARGS(smp));379DEFINE_EVENT(ib_mad_opa_ib_template, ib_mad_handle_out_ib_smi,380	TP_PROTO(struct ib_smp *smp),381	TP_ARGS(smp));382 383#endif /* _TRACE_IB_MAD_H */384 385#include <trace/define_trace.h>386