IB/rdmavt: Add swqe completion trace
The following fields are available for filter/trace: - wqe - wr_id - qpn - qpt - length - idx - ssn - (wr)opcode - (wr)send_flags Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Родитель
c6ad9482fc
Коммит
9260b3541f
|
@ -1028,6 +1028,7 @@ void hfi1_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr)
|
||||||
cmp_psn(qp->s_sending_psn, qp->s_sending_hpsn) <= 0)
|
cmp_psn(qp->s_sending_psn, qp->s_sending_hpsn) <= 0)
|
||||||
break;
|
break;
|
||||||
s_last = qp->s_last;
|
s_last = qp->s_last;
|
||||||
|
trace_hfi1_qp_send_completion(qp, wqe, s_last);
|
||||||
if (++s_last >= qp->s_size)
|
if (++s_last >= qp->s_size)
|
||||||
s_last = 0;
|
s_last = 0;
|
||||||
qp->s_last = s_last;
|
qp->s_last = s_last;
|
||||||
|
@ -1079,6 +1080,7 @@ static struct rvt_swqe *do_rc_completion(struct rvt_qp *qp,
|
||||||
|
|
||||||
rvt_put_swqe(wqe);
|
rvt_put_swqe(wqe);
|
||||||
s_last = qp->s_last;
|
s_last = qp->s_last;
|
||||||
|
trace_hfi1_qp_send_completion(qp, wqe, s_last);
|
||||||
if (++s_last >= qp->s_size)
|
if (++s_last >= qp->s_size)
|
||||||
s_last = 0;
|
s_last = 0;
|
||||||
qp->s_last = s_last;
|
qp->s_last = s_last;
|
||||||
|
|
|
@ -909,8 +909,10 @@ void hfi1_send_complete(struct rvt_qp *qp, struct rvt_swqe *wqe,
|
||||||
|
|
||||||
last = qp->s_last;
|
last = qp->s_last;
|
||||||
old_last = last;
|
old_last = last;
|
||||||
|
trace_hfi1_qp_send_completion(qp, wqe, last);
|
||||||
if (++last >= qp->s_size)
|
if (++last >= qp->s_size)
|
||||||
last = 0;
|
last = 0;
|
||||||
|
trace_hfi1_qp_send_completion(qp, wqe, last);
|
||||||
qp->s_last = last;
|
qp->s_last = last;
|
||||||
/* See post_send() */
|
/* See post_send() */
|
||||||
barrier();
|
barrier();
|
||||||
|
|
|
@ -633,6 +633,49 @@ DEFINE_EVENT(hfi1_bct_template, bct_get,
|
||||||
TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc),
|
TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc),
|
||||||
TP_ARGS(dd, bc));
|
TP_ARGS(dd, bc));
|
||||||
|
|
||||||
|
TRACE_EVENT(
|
||||||
|
hfi1_qp_send_completion,
|
||||||
|
TP_PROTO(struct rvt_qp *qp, struct rvt_swqe *wqe, u32 idx),
|
||||||
|
TP_ARGS(qp, wqe, idx),
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
|
||||||
|
__field(struct rvt_swqe *, wqe)
|
||||||
|
__field(u64, wr_id)
|
||||||
|
__field(u32, qpn)
|
||||||
|
__field(u32, qpt)
|
||||||
|
__field(u32, length)
|
||||||
|
__field(u32, idx)
|
||||||
|
__field(u32, ssn)
|
||||||
|
__field(enum ib_wr_opcode, opcode)
|
||||||
|
__field(int, send_flags)
|
||||||
|
),
|
||||||
|
TP_fast_assign(
|
||||||
|
DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device))
|
||||||
|
__entry->wqe = wqe;
|
||||||
|
__entry->wr_id = wqe->wr.wr_id;
|
||||||
|
__entry->qpn = qp->ibqp.qp_num;
|
||||||
|
__entry->qpt = qp->ibqp.qp_type;
|
||||||
|
__entry->length = wqe->length;
|
||||||
|
__entry->idx = idx;
|
||||||
|
__entry->ssn = wqe->ssn;
|
||||||
|
__entry->opcode = wqe->wr.opcode;
|
||||||
|
__entry->send_flags = wqe->wr.send_flags;
|
||||||
|
),
|
||||||
|
TP_printk(
|
||||||
|
"[%s] qpn 0x%x qpt %u wqe %p idx %u wr_id %llx length %u ssn %u opcode %x send_flags %x",
|
||||||
|
__get_str(dev),
|
||||||
|
__entry->qpn,
|
||||||
|
__entry->qpt,
|
||||||
|
__entry->wqe,
|
||||||
|
__entry->idx,
|
||||||
|
__entry->wr_id,
|
||||||
|
__entry->length,
|
||||||
|
__entry->ssn,
|
||||||
|
__entry->opcode,
|
||||||
|
__entry->send_flags
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
#endif /* __HFI1_TRACE_TX_H */
|
#endif /* __HFI1_TRACE_TX_H */
|
||||||
|
|
||||||
#undef TRACE_INCLUDE_PATH
|
#undef TRACE_INCLUDE_PATH
|
||||||
|
|
Загрузка…
Ссылка в новой задаче