162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci* Copyright(c) 2015, 2016, 2017 Intel Corporation.
462306a36Sopenharmony_ci*/
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#if !defined(__HFI1_TRACE_RC_H) || defined(TRACE_HEADER_MULTI_READ)
762306a36Sopenharmony_ci#define __HFI1_TRACE_RC_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci#include <linux/trace_seq.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "hfi.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#undef TRACE_SYSTEM
1562306a36Sopenharmony_ci#define TRACE_SYSTEM hfi1_rc
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_rc_template,
1862306a36Sopenharmony_ci		    TP_PROTO(struct rvt_qp *qp, u32 psn),
1962306a36Sopenharmony_ci		    TP_ARGS(qp, psn),
2062306a36Sopenharmony_ci		    TP_STRUCT__entry(
2162306a36Sopenharmony_ci			DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
2262306a36Sopenharmony_ci			__field(u32, qpn)
2362306a36Sopenharmony_ci			__field(u32, s_flags)
2462306a36Sopenharmony_ci			__field(u32, psn)
2562306a36Sopenharmony_ci			__field(u32, s_psn)
2662306a36Sopenharmony_ci			__field(u32, s_next_psn)
2762306a36Sopenharmony_ci			__field(u32, s_sending_psn)
2862306a36Sopenharmony_ci			__field(u32, s_sending_hpsn)
2962306a36Sopenharmony_ci			__field(u32, r_psn)
3062306a36Sopenharmony_ci			),
3162306a36Sopenharmony_ci		    TP_fast_assign(
3262306a36Sopenharmony_ci			DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device));
3362306a36Sopenharmony_ci			__entry->qpn = qp->ibqp.qp_num;
3462306a36Sopenharmony_ci			__entry->s_flags = qp->s_flags;
3562306a36Sopenharmony_ci			__entry->psn = psn;
3662306a36Sopenharmony_ci			__entry->s_psn = qp->s_psn;
3762306a36Sopenharmony_ci			__entry->s_next_psn = qp->s_next_psn;
3862306a36Sopenharmony_ci			__entry->s_sending_psn = qp->s_sending_psn;
3962306a36Sopenharmony_ci			__entry->s_sending_hpsn = qp->s_sending_hpsn;
4062306a36Sopenharmony_ci			__entry->r_psn = qp->r_psn;
4162306a36Sopenharmony_ci			),
4262306a36Sopenharmony_ci		    TP_printk(
4362306a36Sopenharmony_ci			"[%s] qpn 0x%x s_flags 0x%x psn 0x%x s_psn 0x%x s_next_psn 0x%x s_sending_psn 0x%x sending_hpsn 0x%x r_psn 0x%x",
4462306a36Sopenharmony_ci			__get_str(dev),
4562306a36Sopenharmony_ci			__entry->qpn,
4662306a36Sopenharmony_ci			__entry->s_flags,
4762306a36Sopenharmony_ci			__entry->psn,
4862306a36Sopenharmony_ci			__entry->s_psn,
4962306a36Sopenharmony_ci			__entry->s_next_psn,
5062306a36Sopenharmony_ci			__entry->s_sending_psn,
5162306a36Sopenharmony_ci			__entry->s_sending_hpsn,
5262306a36Sopenharmony_ci			__entry->r_psn
5362306a36Sopenharmony_ci			)
5462306a36Sopenharmony_ci);
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_sendcomplete,
5762306a36Sopenharmony_ci	     TP_PROTO(struct rvt_qp *qp, u32 psn),
5862306a36Sopenharmony_ci	     TP_ARGS(qp, psn)
5962306a36Sopenharmony_ci);
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_ack,
6262306a36Sopenharmony_ci	     TP_PROTO(struct rvt_qp *qp, u32 psn),
6362306a36Sopenharmony_ci	     TP_ARGS(qp, psn)
6462306a36Sopenharmony_ci);
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciDEFINE_EVENT(hfi1_rc_template, hfi1_rcv_error,
6762306a36Sopenharmony_ci	     TP_PROTO(struct rvt_qp *qp, u32 psn),
6862306a36Sopenharmony_ci	     TP_ARGS(qp, psn)
6962306a36Sopenharmony_ci);
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciDEFINE_EVENT(/* event */
7262306a36Sopenharmony_ci	hfi1_rc_template, hfi1_rc_completion,
7362306a36Sopenharmony_ci	TP_PROTO(struct rvt_qp *qp, u32 psn),
7462306a36Sopenharmony_ci	TP_ARGS(qp, psn)
7562306a36Sopenharmony_ci);
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(/* rc_ack */
7862306a36Sopenharmony_ci	hfi1_rc_ack_template,
7962306a36Sopenharmony_ci	TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn,
8062306a36Sopenharmony_ci		 struct rvt_swqe *wqe),
8162306a36Sopenharmony_ci	TP_ARGS(qp, aeth, psn, wqe),
8262306a36Sopenharmony_ci	TP_STRUCT__entry(/* entry */
8362306a36Sopenharmony_ci		DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
8462306a36Sopenharmony_ci		__field(u32, qpn)
8562306a36Sopenharmony_ci		__field(u32, aeth)
8662306a36Sopenharmony_ci		__field(u32, psn)
8762306a36Sopenharmony_ci		__field(u8, opcode)
8862306a36Sopenharmony_ci		__field(u32, spsn)
8962306a36Sopenharmony_ci		__field(u32, lpsn)
9062306a36Sopenharmony_ci	),
9162306a36Sopenharmony_ci	TP_fast_assign(/* assign */
9262306a36Sopenharmony_ci		DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device));
9362306a36Sopenharmony_ci		__entry->qpn = qp->ibqp.qp_num;
9462306a36Sopenharmony_ci		__entry->aeth = aeth;
9562306a36Sopenharmony_ci		__entry->psn = psn;
9662306a36Sopenharmony_ci		__entry->opcode = wqe->wr.opcode;
9762306a36Sopenharmony_ci		__entry->spsn = wqe->psn;
9862306a36Sopenharmony_ci		__entry->lpsn = wqe->lpsn;
9962306a36Sopenharmony_ci	),
10062306a36Sopenharmony_ci	TP_printk(/* print */
10162306a36Sopenharmony_ci		"[%s] qpn 0x%x aeth 0x%x psn 0x%x opcode 0x%x spsn 0x%x lpsn 0x%x",
10262306a36Sopenharmony_ci		__get_str(dev),
10362306a36Sopenharmony_ci		__entry->qpn,
10462306a36Sopenharmony_ci		__entry->aeth,
10562306a36Sopenharmony_ci		__entry->psn,
10662306a36Sopenharmony_ci		__entry->opcode,
10762306a36Sopenharmony_ci		__entry->spsn,
10862306a36Sopenharmony_ci		__entry->lpsn
10962306a36Sopenharmony_ci	)
11062306a36Sopenharmony_ci);
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciDEFINE_EVENT(/* do_rc_ack */
11362306a36Sopenharmony_ci	hfi1_rc_ack_template, hfi1_rc_ack_do,
11462306a36Sopenharmony_ci	TP_PROTO(struct rvt_qp *qp, u32 aeth, u32 psn,
11562306a36Sopenharmony_ci		 struct rvt_swqe *wqe),
11662306a36Sopenharmony_ci	TP_ARGS(qp, aeth, psn, wqe)
11762306a36Sopenharmony_ci);
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci#endif /* __HFI1_TRACE_RC_H */
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
12262306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
12362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
12462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_rc
12562306a36Sopenharmony_ci#include <trace/define_trace.h>
126