1*05653319SIra Weiny /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2*05653319SIra Weiny 3*05653319SIra Weiny /* 4*05653319SIra Weiny * Copyright (c) 2018 Intel Corporation. All rights reserved. 5*05653319SIra Weiny * 6*05653319SIra Weiny */ 7*05653319SIra Weiny 8*05653319SIra Weiny #undef TRACE_SYSTEM 9*05653319SIra Weiny #define TRACE_SYSTEM ib_umad 10*05653319SIra Weiny 11*05653319SIra Weiny #if !defined(_TRACE_IB_UMAD_H) || defined(TRACE_HEADER_MULTI_READ) 12*05653319SIra Weiny #define _TRACE_IB_UMAD_H 13*05653319SIra Weiny 14*05653319SIra Weiny #include <linux/tracepoint.h> 15*05653319SIra Weiny 16*05653319SIra Weiny DECLARE_EVENT_CLASS(ib_umad_template, 17*05653319SIra Weiny TP_PROTO(struct ib_umad_file *file, struct ib_user_mad_hdr *umad_hdr, 18*05653319SIra Weiny struct ib_mad_hdr *mad_hdr), 19*05653319SIra Weiny TP_ARGS(file, umad_hdr, mad_hdr), 20*05653319SIra Weiny 21*05653319SIra Weiny TP_STRUCT__entry( 22*05653319SIra Weiny __field(u8, port_num) 23*05653319SIra Weiny __field(u8, sl) 24*05653319SIra Weiny __field(u8, path_bits) 25*05653319SIra Weiny __field(u8, grh_present) 26*05653319SIra Weiny __field(u32, id) 27*05653319SIra Weiny __field(u32, status) 28*05653319SIra Weiny __field(u32, timeout_ms) 29*05653319SIra Weiny __field(u32, retires) 30*05653319SIra Weiny __field(u32, length) 31*05653319SIra Weiny __field(u32, qpn) 32*05653319SIra Weiny __field(u32, qkey) 33*05653319SIra Weiny __field(u8, gid_index) 34*05653319SIra Weiny __field(u8, hop_limit) 35*05653319SIra Weiny __field(u16, lid) 36*05653319SIra Weiny __field(u16, attr_id) 37*05653319SIra Weiny __field(u16, pkey_index) 38*05653319SIra Weiny __field(u8, base_version) 39*05653319SIra Weiny __field(u8, mgmt_class) 40*05653319SIra Weiny __field(u8, class_version) 41*05653319SIra Weiny __field(u8, method) 42*05653319SIra Weiny __field(u32, flow_label) 43*05653319SIra Weiny __field(u16, mad_status) 44*05653319SIra Weiny __field(u16, class_specific) 45*05653319SIra Weiny __field(u32, attr_mod) 46*05653319SIra Weiny __field(u64, tid) 47*05653319SIra Weiny __array(u8, gid, 16) 48*05653319SIra Weiny __field(u32, dev_index) 49*05653319SIra Weiny __field(u8, traffic_class) 50*05653319SIra Weiny ), 51*05653319SIra Weiny 52*05653319SIra Weiny TP_fast_assign( 53*05653319SIra Weiny __entry->dev_index = file->port->ib_dev->index; 54*05653319SIra Weiny __entry->port_num = file->port->port_num; 55*05653319SIra Weiny 56*05653319SIra Weiny __entry->id = umad_hdr->id; 57*05653319SIra Weiny __entry->status = umad_hdr->status; 58*05653319SIra Weiny __entry->timeout_ms = umad_hdr->timeout_ms; 59*05653319SIra Weiny __entry->retires = umad_hdr->retries; 60*05653319SIra Weiny __entry->length = umad_hdr->length; 61*05653319SIra Weiny __entry->qpn = umad_hdr->qpn; 62*05653319SIra Weiny __entry->qkey = umad_hdr->qkey; 63*05653319SIra Weiny __entry->lid = umad_hdr->lid; 64*05653319SIra Weiny __entry->sl = umad_hdr->sl; 65*05653319SIra Weiny __entry->path_bits = umad_hdr->path_bits; 66*05653319SIra Weiny __entry->grh_present = umad_hdr->grh_present; 67*05653319SIra Weiny __entry->gid_index = umad_hdr->gid_index; 68*05653319SIra Weiny __entry->hop_limit = umad_hdr->hop_limit; 69*05653319SIra Weiny __entry->traffic_class = umad_hdr->traffic_class; 70*05653319SIra Weiny memcpy(__entry->gid, umad_hdr->gid, sizeof(umad_hdr->gid)); 71*05653319SIra Weiny __entry->flow_label = umad_hdr->flow_label; 72*05653319SIra Weiny __entry->pkey_index = umad_hdr->pkey_index; 73*05653319SIra Weiny 74*05653319SIra Weiny __entry->base_version = mad_hdr->base_version; 75*05653319SIra Weiny __entry->mgmt_class = mad_hdr->mgmt_class; 76*05653319SIra Weiny __entry->class_version = mad_hdr->class_version; 77*05653319SIra Weiny __entry->method = mad_hdr->method; 78*05653319SIra Weiny __entry->mad_status = mad_hdr->status; 79*05653319SIra Weiny __entry->class_specific = mad_hdr->class_specific; 80*05653319SIra Weiny __entry->tid = mad_hdr->tid; 81*05653319SIra Weiny __entry->attr_id = mad_hdr->attr_id; 82*05653319SIra Weiny __entry->attr_mod = mad_hdr->attr_mod; 83*05653319SIra Weiny ), 84*05653319SIra Weiny 85*05653319SIra Weiny TP_printk("%d:%d umad_hdr: id 0x%08x status 0x%08x ms %u ret %u " \ 86*05653319SIra Weiny "len %u QP%u qkey 0x%08x lid 0x%04x sl %u path_bits 0x%x " \ 87*05653319SIra Weiny "grh 0x%x gidi %u hop_lim %u traf_cl %u gid %pI6c " \ 88*05653319SIra Weiny "flow 0x%08x pkeyi %u MAD: base_ver 0x%x class 0x%x " \ 89*05653319SIra Weiny "class_ver 0x%x method 0x%x status 0x%04x " \ 90*05653319SIra Weiny "class_specific 0x%04x tid 0x%016llx attr_id 0x%04x " \ 91*05653319SIra Weiny "attr_mod 0x%08x ", 92*05653319SIra Weiny __entry->dev_index, __entry->port_num, 93*05653319SIra Weiny __entry->id, __entry->status, __entry->timeout_ms, 94*05653319SIra Weiny __entry->retires, __entry->length, be32_to_cpu(__entry->qpn), 95*05653319SIra Weiny be32_to_cpu(__entry->qkey), be16_to_cpu(__entry->lid), 96*05653319SIra Weiny __entry->sl, __entry->path_bits, __entry->grh_present, 97*05653319SIra Weiny __entry->gid_index, __entry->hop_limit, 98*05653319SIra Weiny __entry->traffic_class, &__entry->gid, 99*05653319SIra Weiny be32_to_cpu(__entry->flow_label), __entry->pkey_index, 100*05653319SIra Weiny __entry->base_version, __entry->mgmt_class, 101*05653319SIra Weiny __entry->class_version, __entry->method, 102*05653319SIra Weiny be16_to_cpu(__entry->mad_status), 103*05653319SIra Weiny be16_to_cpu(__entry->class_specific), 104*05653319SIra Weiny be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id), 105*05653319SIra Weiny be32_to_cpu(__entry->attr_mod) 106*05653319SIra Weiny ) 107*05653319SIra Weiny ); 108*05653319SIra Weiny 109*05653319SIra Weiny DEFINE_EVENT(ib_umad_template, ib_umad_write, 110*05653319SIra Weiny TP_PROTO(struct ib_umad_file *file, struct ib_user_mad_hdr *umad_hdr, 111*05653319SIra Weiny struct ib_mad_hdr *mad_hdr), 112*05653319SIra Weiny TP_ARGS(file, umad_hdr, mad_hdr)); 113*05653319SIra Weiny 114*05653319SIra Weiny DEFINE_EVENT(ib_umad_template, ib_umad_read_recv, 115*05653319SIra Weiny TP_PROTO(struct ib_umad_file *file, struct ib_user_mad_hdr *umad_hdr, 116*05653319SIra Weiny struct ib_mad_hdr *mad_hdr), 117*05653319SIra Weiny TP_ARGS(file, umad_hdr, mad_hdr)); 118*05653319SIra Weiny 119*05653319SIra Weiny DEFINE_EVENT(ib_umad_template, ib_umad_read_send, 120*05653319SIra Weiny TP_PROTO(struct ib_umad_file *file, struct ib_user_mad_hdr *umad_hdr, 121*05653319SIra Weiny struct ib_mad_hdr *mad_hdr), 122*05653319SIra Weiny TP_ARGS(file, umad_hdr, mad_hdr)); 123*05653319SIra Weiny 124*05653319SIra Weiny #endif /* _TRACE_IB_UMAD_H */ 125*05653319SIra Weiny 126*05653319SIra Weiny #include <trace/define_trace.h> 127