~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/trace/events/ib_mad.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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_SYSTEM
  8 #define TRACE_SYSTEM ib_mad
  9 
 10 #if !defined(_TRACE_IB_MAD_H) || defined(TRACE_HEADER_MULTI_READ)
 11 #define _TRACE_IB_MAD_H
 12 
 13 #include <linux/tracepoint.h>
 14 #include <rdma/ib_mad.h>
 15 
 16 #ifdef CONFIG_TRACEPOINTS
 17 struct trace_event_raw_ib_mad_send_template;
 18 static 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 #endif
 22 
 23 DECLARE_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->rqkey
104         )
105 );
106 
107 DEFINE_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));
111 DEFINE_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));
115 DEFINE_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 
120 TRACE_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 
183 TRACE_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->sl
243         )
244 );
245 
246 DECLARE_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_version
277         )
278 );
279 DEFINE_EVENT(ib_mad_agent_template, ib_mad_recv_done_agent,
280         TP_PROTO(struct ib_mad_agent_private *agent),
281         TP_ARGS(agent));
282 DEFINE_EVENT(ib_mad_agent_template, ib_mad_send_done_agent,
283         TP_PROTO(struct ib_mad_agent_private *agent),
284         TP_ARGS(agent));
285 DEFINE_EVENT(ib_mad_agent_template, ib_mad_create_agent,
286         TP_PROTO(struct ib_mad_agent_private *agent),
287         TP_ARGS(agent));
288 DEFINE_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 
294 DECLARE_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_path
328         )
329 );
330 
331 DEFINE_EVENT(ib_mad_opa_smi_template, ib_mad_handle_opa_smi,
332         TP_PROTO(struct opa_smp *smp),
333         TP_ARGS(smp));
334 DEFINE_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 
339 DECLARE_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_path
373         )
374 );
375 
376 DEFINE_EVENT(ib_mad_opa_ib_template, ib_mad_handle_ib_smi,
377         TP_PROTO(struct ib_smp *smp),
378         TP_ARGS(smp));
379 DEFINE_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 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php