RE: [PATCH V6 2/6] IB/MAD: Add recv path trace point

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Original Message-----
>From: Weiny, Ira
>Sent: Sunday, March 17, 2019 4:00 PM
>To: Jason Gunthorpe <jgg@xxxxxxxx>; Steven Rostedt
><rostedt@xxxxxxxxxxx>
>Cc: Ingo Molnar <mingo@xxxxxxxxxx>; linux-rdma@xxxxxxxxxxxxxxx; Weiny,
>Ira <ira.weiny@xxxxxxxxx>; Hal Rosenstock <hal@xxxxxxxxxxxxxxxxxx>; Alexei
>Starovoitov <ast@xxxxxxxxxx>; Leon Romanovsky <leon@xxxxxxxxxx>; Ruhl,
>Michael J <michael.j.ruhl@xxxxxxxxx>
>Subject: [PATCH V6 2/6] IB/MAD: Add recv path trace point
>
>From: Ira Weiny <ira.weiny@xxxxxxxxx>
>
>Trace received MAD details.
>
>CC: Hal Rosenstock <hal@xxxxxxxxxxxxxxxxxx>
>CC: Alexei Starovoitov <ast@xxxxxxxxxx>
>CC: Leon Romanovsky <leon@xxxxxxxxxx>
>CC: Jason Gunthorpe <jgg@xxxxxxxx>
>CC: "Ruhl, Michael J" <michael.j.ruhl@xxxxxxxxx>
>CC: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
>Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>

Reviewed-by: Michael J. Ruhl <michael.j.ruhl@xxxxxxxxx>

>
>---
>Changes from V4:
>	Cleanup for checkpatch
>	remove if check and ib_query_pkey for cleaner code
>
>Changes from V3:
>	change from dev_name to dev_index
>
>Changes from V2
>	Change dev_name to string
>	Reorder fields for more efficient ring buffer utilization
>
> drivers/infiniband/core/mad.c |  3 ++
> include/trace/events/ib_mad.h | 67
>+++++++++++++++++++++++++++++++++++
> 2 files changed, 70 insertions(+)
>
>diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
>index 92133b2c5072..f91f7ce4c007 100644
>--- a/drivers/infiniband/core/mad.c
>+++ b/drivers/infiniband/core/mad.c
>@@ -2326,6 +2326,9 @@ static void ib_mad_recv_done(struct ib_cq *cq,
>struct ib_wc *wc)
> 	if (!validate_mad((const struct ib_mad_hdr *)recv->mad, qp_info,
>opa))
> 		goto out;
>
>+	trace_ib_mad_recv_done_handler(qp_info, wc,
>+				       (struct ib_mad_hdr *)recv->mad);
>+
> 	mad_size = recv->mad_size;
> 	response = alloc_mad_private(mad_size, GFP_KERNEL);
> 	if (!response)
>diff --git a/include/trace/events/ib_mad.h b/include/trace/events/ib_mad.h
>index 585028f17fa7..245a916bfd5a 100644
>--- a/include/trace/events/ib_mad.h
>+++ b/include/trace/events/ib_mad.h
>@@ -181,6 +181,73 @@ TRACE_EVENT(ib_mad_send_done_handler,
> 	)
> );
>
>+TRACE_EVENT(ib_mad_recv_done_handler,
>+	TP_PROTO(struct ib_mad_qp_info *qp_info, struct ib_wc *wc,
>+		 struct ib_mad_hdr *mad_hdr),
>+	TP_ARGS(qp_info, wc, mad_hdr),
>+
>+	TP_STRUCT__entry(
>+		__field(u8,             base_version)
>+		__field(u8,             mgmt_class)
>+		__field(u8,             class_version)
>+		__field(u8,             port_num)
>+		__field(u32,            qp_num)
>+		__field(u16,            status)
>+		__field(u16,            class_specific)
>+		__field(u32,            length)
>+		__field(u64,            tid)
>+		__field(u8,             method)
>+		__field(u8,             sl)
>+		__field(u16,            attr_id)
>+		__field(u32,            attr_mod)
>+		__field(u16,            src_qp)
>+		__field(u16,            wc_status)
>+		__field(u32,            slid)
>+		__field(u32,            dev_index)
>+		__field(u16,            pkey)
>+	),
>+
>+	TP_fast_assign(
>+		__entry->dev_index = qp_info->port_priv->device->index;
>+		__entry->port_num = qp_info->port_priv->port_num;
>+		__entry->qp_num = qp_info->qp->qp_num;
>+		__entry->length = wc->byte_len;
>+		__entry->base_version = mad_hdr->base_version;
>+		__entry->mgmt_class = mad_hdr->mgmt_class;
>+		__entry->class_version = mad_hdr->class_version;
>+		__entry->method = mad_hdr->method;
>+		__entry->status = mad_hdr->status;
>+		__entry->class_specific = mad_hdr->class_specific;
>+		__entry->tid = mad_hdr->tid;
>+		__entry->attr_id = mad_hdr->attr_id;
>+		__entry->attr_mod = mad_hdr->attr_mod;
>+		__entry->slid = wc->slid;
>+		__entry->src_qp = wc->src_qp;
>+		__entry->sl = wc->sl;
>+		ib_query_pkey(qp_info->port_priv->device,
>+			      qp_info->port_priv->port_num,
>+			      wc->pkey_index, &__entry->pkey);
>+		__entry->wc_status = wc->status;
>+	),
>+
>+	TP_printk("%d:%d QP%d : RECV WC Status %d : length %d : hdr : " \
>+		  "base_ver 0x%02x class 0x%02x class_ver 0x%02x " \
>+		  "method 0x%02x status 0x%04x class_specific 0x%04x " \
>+		  "tid 0x%016llx attr_id 0x%04x attr_mod 0x%08x " \
>+		  "slid 0x%08x src QP%d, sl %d pkey 0x%04x",
>+		__entry->dev_index, __entry->port_num, __entry-
>>qp_num,
>+		__entry->wc_status,
>+		__entry->length,
>+		__entry->base_version, __entry->mgmt_class,
>+		__entry->class_version, __entry->method,
>+		be16_to_cpu(__entry->status),
>+		be16_to_cpu(__entry->class_specific),
>+		be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id),
>+		be32_to_cpu(__entry->attr_mod),
>+		__entry->slid, __entry->src_qp, __entry->sl, __entry->pkey
>+	)
>+);
>+
>
> #endif /* _TRACE_IB_MAD_H */
>
>--
>2.20.1




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux