162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright(c) 2015 - 2017 Intel Corporation. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#if !defined(__HFI1_TRACE_TX_H) || defined(TRACE_HEADER_MULTI_READ) 662306a36Sopenharmony_ci#define __HFI1_TRACE_TX_H 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <linux/tracepoint.h> 962306a36Sopenharmony_ci#include <linux/trace_seq.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "hfi.h" 1262306a36Sopenharmony_ci#include "mad.h" 1362306a36Sopenharmony_ci#include "sdma.h" 1462306a36Sopenharmony_ci#include "ipoib.h" 1562306a36Sopenharmony_ci#include "user_sdma.h" 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciconst char *parse_sdma_flags(struct trace_seq *p, u64 desc0, u64 desc1); 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define __parse_sdma_flags(desc0, desc1) parse_sdma_flags(p, desc0, desc1) 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#undef TRACE_SYSTEM 2262306a36Sopenharmony_ci#define TRACE_SYSTEM hfi1_tx 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciTRACE_EVENT(hfi1_piofree, 2562306a36Sopenharmony_ci TP_PROTO(struct send_context *sc, int extra), 2662306a36Sopenharmony_ci TP_ARGS(sc, extra), 2762306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd) 2862306a36Sopenharmony_ci __field(u32, sw_index) 2962306a36Sopenharmony_ci __field(u32, hw_context) 3062306a36Sopenharmony_ci __field(int, extra) 3162306a36Sopenharmony_ci ), 3262306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sc->dd); 3362306a36Sopenharmony_ci __entry->sw_index = sc->sw_index; 3462306a36Sopenharmony_ci __entry->hw_context = sc->hw_context; 3562306a36Sopenharmony_ci __entry->extra = extra; 3662306a36Sopenharmony_ci ), 3762306a36Sopenharmony_ci TP_printk("[%s] ctxt %u(%u) extra %d", 3862306a36Sopenharmony_ci __get_str(dev), 3962306a36Sopenharmony_ci __entry->sw_index, 4062306a36Sopenharmony_ci __entry->hw_context, 4162306a36Sopenharmony_ci __entry->extra 4262306a36Sopenharmony_ci ) 4362306a36Sopenharmony_ci); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciTRACE_EVENT(hfi1_wantpiointr, 4662306a36Sopenharmony_ci TP_PROTO(struct send_context *sc, u32 needint, u64 credit_ctrl), 4762306a36Sopenharmony_ci TP_ARGS(sc, needint, credit_ctrl), 4862306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd) 4962306a36Sopenharmony_ci __field(u32, sw_index) 5062306a36Sopenharmony_ci __field(u32, hw_context) 5162306a36Sopenharmony_ci __field(u32, needint) 5262306a36Sopenharmony_ci __field(u64, credit_ctrl) 5362306a36Sopenharmony_ci ), 5462306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sc->dd); 5562306a36Sopenharmony_ci __entry->sw_index = sc->sw_index; 5662306a36Sopenharmony_ci __entry->hw_context = sc->hw_context; 5762306a36Sopenharmony_ci __entry->needint = needint; 5862306a36Sopenharmony_ci __entry->credit_ctrl = credit_ctrl; 5962306a36Sopenharmony_ci ), 6062306a36Sopenharmony_ci TP_printk("[%s] ctxt %u(%u) on %d credit_ctrl 0x%llx", 6162306a36Sopenharmony_ci __get_str(dev), 6262306a36Sopenharmony_ci __entry->sw_index, 6362306a36Sopenharmony_ci __entry->hw_context, 6462306a36Sopenharmony_ci __entry->needint, 6562306a36Sopenharmony_ci (unsigned long long)__entry->credit_ctrl 6662306a36Sopenharmony_ci ) 6762306a36Sopenharmony_ci); 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_qpsleepwakeup_template, 7062306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 7162306a36Sopenharmony_ci TP_ARGS(qp, flags), 7262306a36Sopenharmony_ci TP_STRUCT__entry( 7362306a36Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 7462306a36Sopenharmony_ci __field(u32, qpn) 7562306a36Sopenharmony_ci __field(u32, flags) 7662306a36Sopenharmony_ci __field(u32, s_flags) 7762306a36Sopenharmony_ci __field(u32, ps_flags) 7862306a36Sopenharmony_ci __field(unsigned long, iow_flags) 7962306a36Sopenharmony_ci ), 8062306a36Sopenharmony_ci TP_fast_assign( 8162306a36Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 8262306a36Sopenharmony_ci __entry->flags = flags; 8362306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 8462306a36Sopenharmony_ci __entry->s_flags = qp->s_flags; 8562306a36Sopenharmony_ci __entry->ps_flags = 8662306a36Sopenharmony_ci ((struct hfi1_qp_priv *)qp->priv)->s_flags; 8762306a36Sopenharmony_ci __entry->iow_flags = 8862306a36Sopenharmony_ci ((struct hfi1_qp_priv *)qp->priv)->s_iowait.flags; 8962306a36Sopenharmony_ci ), 9062306a36Sopenharmony_ci TP_printk( 9162306a36Sopenharmony_ci "[%s] qpn 0x%x flags 0x%x s_flags 0x%x ps_flags 0x%x iow_flags 0x%lx", 9262306a36Sopenharmony_ci __get_str(dev), 9362306a36Sopenharmony_ci __entry->qpn, 9462306a36Sopenharmony_ci __entry->flags, 9562306a36Sopenharmony_ci __entry->s_flags, 9662306a36Sopenharmony_ci __entry->ps_flags, 9762306a36Sopenharmony_ci __entry->iow_flags 9862306a36Sopenharmony_ci ) 9962306a36Sopenharmony_ci); 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciDEFINE_EVENT(hfi1_qpsleepwakeup_template, hfi1_qpwakeup, 10262306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 10362306a36Sopenharmony_ci TP_ARGS(qp, flags)); 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ciDEFINE_EVENT(hfi1_qpsleepwakeup_template, hfi1_qpsleep, 10662306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, u32 flags), 10762306a36Sopenharmony_ci TP_ARGS(qp, flags)); 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_descriptor, 11062306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 11162306a36Sopenharmony_ci u64 desc0, 11262306a36Sopenharmony_ci u64 desc1, 11362306a36Sopenharmony_ci u16 e, 11462306a36Sopenharmony_ci void *descp), 11562306a36Sopenharmony_ci TP_ARGS(sde, desc0, desc1, e, descp), 11662306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 11762306a36Sopenharmony_ci __field(void *, descp) 11862306a36Sopenharmony_ci __field(u64, desc0) 11962306a36Sopenharmony_ci __field(u64, desc1) 12062306a36Sopenharmony_ci __field(u16, e) 12162306a36Sopenharmony_ci __field(u8, idx) 12262306a36Sopenharmony_ci ), 12362306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 12462306a36Sopenharmony_ci __entry->desc0 = desc0; 12562306a36Sopenharmony_ci __entry->desc1 = desc1; 12662306a36Sopenharmony_ci __entry->idx = sde->this_idx; 12762306a36Sopenharmony_ci __entry->descp = descp; 12862306a36Sopenharmony_ci __entry->e = e; 12962306a36Sopenharmony_ci ), 13062306a36Sopenharmony_ci TP_printk( 13162306a36Sopenharmony_ci "[%s] SDE(%u) flags:%s addr:0x%016llx gen:%u len:%u d0:%016llx d1:%016llx to %p,%u", 13262306a36Sopenharmony_ci __get_str(dev), 13362306a36Sopenharmony_ci __entry->idx, 13462306a36Sopenharmony_ci __parse_sdma_flags(__entry->desc0, __entry->desc1), 13562306a36Sopenharmony_ci (__entry->desc0 >> SDMA_DESC0_PHY_ADDR_SHIFT) & 13662306a36Sopenharmony_ci SDMA_DESC0_PHY_ADDR_MASK, 13762306a36Sopenharmony_ci (u8)((__entry->desc1 >> SDMA_DESC1_GENERATION_SHIFT) & 13862306a36Sopenharmony_ci SDMA_DESC1_GENERATION_MASK), 13962306a36Sopenharmony_ci (u16)((__entry->desc0 >> SDMA_DESC0_BYTE_COUNT_SHIFT) & 14062306a36Sopenharmony_ci SDMA_DESC0_BYTE_COUNT_MASK), 14162306a36Sopenharmony_ci __entry->desc0, 14262306a36Sopenharmony_ci __entry->desc1, 14362306a36Sopenharmony_ci __entry->descp, 14462306a36Sopenharmony_ci __entry->e 14562306a36Sopenharmony_ci ) 14662306a36Sopenharmony_ci); 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_engine_select, 14962306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u32 sel, u8 vl, u8 idx), 15062306a36Sopenharmony_ci TP_ARGS(dd, sel, vl, idx), 15162306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 15262306a36Sopenharmony_ci __field(u32, sel) 15362306a36Sopenharmony_ci __field(u8, vl) 15462306a36Sopenharmony_ci __field(u8, idx) 15562306a36Sopenharmony_ci ), 15662306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 15762306a36Sopenharmony_ci __entry->sel = sel; 15862306a36Sopenharmony_ci __entry->vl = vl; 15962306a36Sopenharmony_ci __entry->idx = idx; 16062306a36Sopenharmony_ci ), 16162306a36Sopenharmony_ci TP_printk("[%s] selecting SDE %u sel 0x%x vl %u", 16262306a36Sopenharmony_ci __get_str(dev), 16362306a36Sopenharmony_ci __entry->idx, 16462306a36Sopenharmony_ci __entry->sel, 16562306a36Sopenharmony_ci __entry->vl 16662306a36Sopenharmony_ci ) 16762306a36Sopenharmony_ci); 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_free_queues, 17062306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt), 17162306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt), 17262306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 17362306a36Sopenharmony_ci __field(u16, ctxt) 17462306a36Sopenharmony_ci __field(u16, subctxt) 17562306a36Sopenharmony_ci ), 17662306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 17762306a36Sopenharmony_ci __entry->ctxt = ctxt; 17862306a36Sopenharmony_ci __entry->subctxt = subctxt; 17962306a36Sopenharmony_ci ), 18062306a36Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u] Freeing user SDMA queues", 18162306a36Sopenharmony_ci __get_str(dev), 18262306a36Sopenharmony_ci __entry->ctxt, 18362306a36Sopenharmony_ci __entry->subctxt 18462306a36Sopenharmony_ci ) 18562306a36Sopenharmony_ci); 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_process_request, 18862306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 18962306a36Sopenharmony_ci u16 comp_idx), 19062306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx), 19162306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 19262306a36Sopenharmony_ci __field(u16, ctxt) 19362306a36Sopenharmony_ci __field(u16, subctxt) 19462306a36Sopenharmony_ci __field(u16, comp_idx) 19562306a36Sopenharmony_ci ), 19662306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 19762306a36Sopenharmony_ci __entry->ctxt = ctxt; 19862306a36Sopenharmony_ci __entry->subctxt = subctxt; 19962306a36Sopenharmony_ci __entry->comp_idx = comp_idx; 20062306a36Sopenharmony_ci ), 20162306a36Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u] Using req/comp entry: %u", 20262306a36Sopenharmony_ci __get_str(dev), 20362306a36Sopenharmony_ci __entry->ctxt, 20462306a36Sopenharmony_ci __entry->subctxt, 20562306a36Sopenharmony_ci __entry->comp_idx 20662306a36Sopenharmony_ci ) 20762306a36Sopenharmony_ci); 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ciDECLARE_EVENT_CLASS( 21062306a36Sopenharmony_ci hfi1_sdma_value_template, 21162306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, u16 comp_idx, 21262306a36Sopenharmony_ci u32 value), 21362306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, value), 21462306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 21562306a36Sopenharmony_ci __field(u16, ctxt) 21662306a36Sopenharmony_ci __field(u16, subctxt) 21762306a36Sopenharmony_ci __field(u16, comp_idx) 21862306a36Sopenharmony_ci __field(u32, value) 21962306a36Sopenharmony_ci ), 22062306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 22162306a36Sopenharmony_ci __entry->ctxt = ctxt; 22262306a36Sopenharmony_ci __entry->subctxt = subctxt; 22362306a36Sopenharmony_ci __entry->comp_idx = comp_idx; 22462306a36Sopenharmony_ci __entry->value = value; 22562306a36Sopenharmony_ci ), 22662306a36Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u:%u] value: %u", 22762306a36Sopenharmony_ci __get_str(dev), 22862306a36Sopenharmony_ci __entry->ctxt, 22962306a36Sopenharmony_ci __entry->subctxt, 23062306a36Sopenharmony_ci __entry->comp_idx, 23162306a36Sopenharmony_ci __entry->value 23262306a36Sopenharmony_ci ) 23362306a36Sopenharmony_ci); 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_initial_tidoffset, 23662306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 23762306a36Sopenharmony_ci u16 comp_idx, u32 tidoffset), 23862306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, tidoffset)); 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_data_length, 24162306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 24262306a36Sopenharmony_ci u16 comp_idx, u32 data_len), 24362306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, data_len)); 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_value_template, hfi1_sdma_user_compute_length, 24662306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 24762306a36Sopenharmony_ci u16 comp_idx, u32 data_len), 24862306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, data_len)); 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_tid_info, 25162306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 25262306a36Sopenharmony_ci u16 comp_idx, u32 tidoffset, u32 units, u8 shift), 25362306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, comp_idx, tidoffset, units, shift), 25462306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 25562306a36Sopenharmony_ci __field(u16, ctxt) 25662306a36Sopenharmony_ci __field(u16, subctxt) 25762306a36Sopenharmony_ci __field(u16, comp_idx) 25862306a36Sopenharmony_ci __field(u32, tidoffset) 25962306a36Sopenharmony_ci __field(u32, units) 26062306a36Sopenharmony_ci __field(u8, shift) 26162306a36Sopenharmony_ci ), 26262306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 26362306a36Sopenharmony_ci __entry->ctxt = ctxt; 26462306a36Sopenharmony_ci __entry->subctxt = subctxt; 26562306a36Sopenharmony_ci __entry->comp_idx = comp_idx; 26662306a36Sopenharmony_ci __entry->tidoffset = tidoffset; 26762306a36Sopenharmony_ci __entry->units = units; 26862306a36Sopenharmony_ci __entry->shift = shift; 26962306a36Sopenharmony_ci ), 27062306a36Sopenharmony_ci TP_printk("[%s] SDMA [%u:%u:%u] TID offset %ubytes %uunits om %u", 27162306a36Sopenharmony_ci __get_str(dev), 27262306a36Sopenharmony_ci __entry->ctxt, 27362306a36Sopenharmony_ci __entry->subctxt, 27462306a36Sopenharmony_ci __entry->comp_idx, 27562306a36Sopenharmony_ci __entry->tidoffset, 27662306a36Sopenharmony_ci __entry->units, 27762306a36Sopenharmony_ci __entry->shift 27862306a36Sopenharmony_ci ) 27962306a36Sopenharmony_ci); 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_request, 28262306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u16 subctxt, 28362306a36Sopenharmony_ci unsigned long dim), 28462306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, dim), 28562306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 28662306a36Sopenharmony_ci __field(u16, ctxt) 28762306a36Sopenharmony_ci __field(u16, subctxt) 28862306a36Sopenharmony_ci __field(unsigned long, dim) 28962306a36Sopenharmony_ci ), 29062306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 29162306a36Sopenharmony_ci __entry->ctxt = ctxt; 29262306a36Sopenharmony_ci __entry->subctxt = subctxt; 29362306a36Sopenharmony_ci __entry->dim = dim; 29462306a36Sopenharmony_ci ), 29562306a36Sopenharmony_ci TP_printk("[%s] SDMA from %u:%u (%lu)", 29662306a36Sopenharmony_ci __get_str(dev), 29762306a36Sopenharmony_ci __entry->ctxt, 29862306a36Sopenharmony_ci __entry->subctxt, 29962306a36Sopenharmony_ci __entry->dim 30062306a36Sopenharmony_ci ) 30162306a36Sopenharmony_ci); 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_engine_class, 30462306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 30562306a36Sopenharmony_ci TP_ARGS(sde, status), 30662306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 30762306a36Sopenharmony_ci __field(u64, status) 30862306a36Sopenharmony_ci __field(u8, idx) 30962306a36Sopenharmony_ci ), 31062306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 31162306a36Sopenharmony_ci __entry->status = status; 31262306a36Sopenharmony_ci __entry->idx = sde->this_idx; 31362306a36Sopenharmony_ci ), 31462306a36Sopenharmony_ci TP_printk("[%s] SDE(%u) status %llx", 31562306a36Sopenharmony_ci __get_str(dev), 31662306a36Sopenharmony_ci __entry->idx, 31762306a36Sopenharmony_ci (unsigned long long)__entry->status 31862306a36Sopenharmony_ci ) 31962306a36Sopenharmony_ci); 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_engine_class, hfi1_sdma_engine_interrupt, 32262306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 32362306a36Sopenharmony_ci TP_ARGS(sde, status) 32462306a36Sopenharmony_ci); 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_engine_class, hfi1_sdma_engine_progress, 32762306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 status), 32862306a36Sopenharmony_ci TP_ARGS(sde, status) 32962306a36Sopenharmony_ci); 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_ahg_ad, 33262306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 33362306a36Sopenharmony_ci TP_ARGS(sde, aidx), 33462306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 33562306a36Sopenharmony_ci __field(int, aidx) 33662306a36Sopenharmony_ci __field(u8, idx) 33762306a36Sopenharmony_ci ), 33862306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 33962306a36Sopenharmony_ci __entry->idx = sde->this_idx; 34062306a36Sopenharmony_ci __entry->aidx = aidx; 34162306a36Sopenharmony_ci ), 34262306a36Sopenharmony_ci TP_printk("[%s] SDE(%u) aidx %d", 34362306a36Sopenharmony_ci __get_str(dev), 34462306a36Sopenharmony_ci __entry->idx, 34562306a36Sopenharmony_ci __entry->aidx 34662306a36Sopenharmony_ci ) 34762306a36Sopenharmony_ci); 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_ahg_ad, hfi1_ahg_allocate, 35062306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 35162306a36Sopenharmony_ci TP_ARGS(sde, aidx)); 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_ahg_ad, hfi1_ahg_deallocate, 35462306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, int aidx), 35562306a36Sopenharmony_ci TP_ARGS(sde, aidx)); 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci#ifdef CONFIG_HFI1_DEBUG_SDMA_ORDER 35862306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_progress, 35962306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 36062306a36Sopenharmony_ci u16 hwhead, 36162306a36Sopenharmony_ci u16 swhead, 36262306a36Sopenharmony_ci struct sdma_txreq *txp 36362306a36Sopenharmony_ci ), 36462306a36Sopenharmony_ci TP_ARGS(sde, hwhead, swhead, txp), 36562306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 36662306a36Sopenharmony_ci __field(u64, sn) 36762306a36Sopenharmony_ci __field(u16, hwhead) 36862306a36Sopenharmony_ci __field(u16, swhead) 36962306a36Sopenharmony_ci __field(u16, txnext) 37062306a36Sopenharmony_ci __field(u16, tx_tail) 37162306a36Sopenharmony_ci __field(u16, tx_head) 37262306a36Sopenharmony_ci __field(u8, idx) 37362306a36Sopenharmony_ci ), 37462306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 37562306a36Sopenharmony_ci __entry->hwhead = hwhead; 37662306a36Sopenharmony_ci __entry->swhead = swhead; 37762306a36Sopenharmony_ci __entry->tx_tail = sde->tx_tail; 37862306a36Sopenharmony_ci __entry->tx_head = sde->tx_head; 37962306a36Sopenharmony_ci __entry->txnext = txp ? txp->next_descq_idx : ~0; 38062306a36Sopenharmony_ci __entry->idx = sde->this_idx; 38162306a36Sopenharmony_ci __entry->sn = txp ? txp->sn : ~0; 38262306a36Sopenharmony_ci ), 38362306a36Sopenharmony_ci TP_printk( 38462306a36Sopenharmony_ci "[%s] SDE(%u) sn %llu hwhead %u swhead %u next_descq_idx %u tx_head %u tx_tail %u", 38562306a36Sopenharmony_ci __get_str(dev), 38662306a36Sopenharmony_ci __entry->idx, 38762306a36Sopenharmony_ci __entry->sn, 38862306a36Sopenharmony_ci __entry->hwhead, 38962306a36Sopenharmony_ci __entry->swhead, 39062306a36Sopenharmony_ci __entry->txnext, 39162306a36Sopenharmony_ci __entry->tx_head, 39262306a36Sopenharmony_ci __entry->tx_tail 39362306a36Sopenharmony_ci ) 39462306a36Sopenharmony_ci); 39562306a36Sopenharmony_ci#else 39662306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_progress, 39762306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 39862306a36Sopenharmony_ci u16 hwhead, u16 swhead, 39962306a36Sopenharmony_ci struct sdma_txreq *txp 40062306a36Sopenharmony_ci ), 40162306a36Sopenharmony_ci TP_ARGS(sde, hwhead, swhead, txp), 40262306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 40362306a36Sopenharmony_ci __field(u16, hwhead) 40462306a36Sopenharmony_ci __field(u16, swhead) 40562306a36Sopenharmony_ci __field(u16, txnext) 40662306a36Sopenharmony_ci __field(u16, tx_tail) 40762306a36Sopenharmony_ci __field(u16, tx_head) 40862306a36Sopenharmony_ci __field(u8, idx) 40962306a36Sopenharmony_ci ), 41062306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 41162306a36Sopenharmony_ci __entry->hwhead = hwhead; 41262306a36Sopenharmony_ci __entry->swhead = swhead; 41362306a36Sopenharmony_ci __entry->tx_tail = sde->tx_tail; 41462306a36Sopenharmony_ci __entry->tx_head = sde->tx_head; 41562306a36Sopenharmony_ci __entry->txnext = txp ? txp->next_descq_idx : ~0; 41662306a36Sopenharmony_ci __entry->idx = sde->this_idx; 41762306a36Sopenharmony_ci ), 41862306a36Sopenharmony_ci TP_printk( 41962306a36Sopenharmony_ci "[%s] SDE(%u) hwhead %u swhead %u next_descq_idx %u tx_head %u tx_tail %u", 42062306a36Sopenharmony_ci __get_str(dev), 42162306a36Sopenharmony_ci __entry->idx, 42262306a36Sopenharmony_ci __entry->hwhead, 42362306a36Sopenharmony_ci __entry->swhead, 42462306a36Sopenharmony_ci __entry->txnext, 42562306a36Sopenharmony_ci __entry->tx_head, 42662306a36Sopenharmony_ci __entry->tx_tail 42762306a36Sopenharmony_ci ) 42862306a36Sopenharmony_ci); 42962306a36Sopenharmony_ci#endif 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_sdma_sn, 43262306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 sn), 43362306a36Sopenharmony_ci TP_ARGS(sde, sn), 43462306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 43562306a36Sopenharmony_ci __field(u64, sn) 43662306a36Sopenharmony_ci __field(u8, idx) 43762306a36Sopenharmony_ci ), 43862306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 43962306a36Sopenharmony_ci __entry->sn = sn; 44062306a36Sopenharmony_ci __entry->idx = sde->this_idx; 44162306a36Sopenharmony_ci ), 44262306a36Sopenharmony_ci TP_printk("[%s] SDE(%u) sn %llu", 44362306a36Sopenharmony_ci __get_str(dev), 44462306a36Sopenharmony_ci __entry->idx, 44562306a36Sopenharmony_ci __entry->sn 44662306a36Sopenharmony_ci ) 44762306a36Sopenharmony_ci); 44862306a36Sopenharmony_ci 44962306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_sn, hfi1_sdma_out_sn, 45062306a36Sopenharmony_ci TP_PROTO( 45162306a36Sopenharmony_ci struct sdma_engine *sde, 45262306a36Sopenharmony_ci u64 sn 45362306a36Sopenharmony_ci ), 45462306a36Sopenharmony_ci TP_ARGS(sde, sn) 45562306a36Sopenharmony_ci); 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ciDEFINE_EVENT(hfi1_sdma_sn, hfi1_sdma_in_sn, 45862306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, u64 sn), 45962306a36Sopenharmony_ci TP_ARGS(sde, sn) 46062306a36Sopenharmony_ci); 46162306a36Sopenharmony_ci 46262306a36Sopenharmony_ci#define USDMA_HDR_FORMAT \ 46362306a36Sopenharmony_ci "[%s:%u:%u:%u] PBC=(0x%x 0x%x) LRH=(0x%x 0x%x) BTH=(0x%x 0x%x 0x%x) KDETH=(0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x) TIDVal=0x%x" 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_header, 46662306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 req, 46762306a36Sopenharmony_ci struct hfi1_pkt_header *hdr, u32 tidval), 46862306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, req, hdr, tidval), 46962306a36Sopenharmony_ci TP_STRUCT__entry( 47062306a36Sopenharmony_ci DD_DEV_ENTRY(dd) 47162306a36Sopenharmony_ci __field(u16, ctxt) 47262306a36Sopenharmony_ci __field(u8, subctxt) 47362306a36Sopenharmony_ci __field(u16, req) 47462306a36Sopenharmony_ci __field(u32, pbc0) 47562306a36Sopenharmony_ci __field(u32, pbc1) 47662306a36Sopenharmony_ci __field(u32, lrh0) 47762306a36Sopenharmony_ci __field(u32, lrh1) 47862306a36Sopenharmony_ci __field(u32, bth0) 47962306a36Sopenharmony_ci __field(u32, bth1) 48062306a36Sopenharmony_ci __field(u32, bth2) 48162306a36Sopenharmony_ci __field(u32, kdeth0) 48262306a36Sopenharmony_ci __field(u32, kdeth1) 48362306a36Sopenharmony_ci __field(u32, kdeth2) 48462306a36Sopenharmony_ci __field(u32, kdeth3) 48562306a36Sopenharmony_ci __field(u32, kdeth4) 48662306a36Sopenharmony_ci __field(u32, kdeth5) 48762306a36Sopenharmony_ci __field(u32, kdeth6) 48862306a36Sopenharmony_ci __field(u32, kdeth7) 48962306a36Sopenharmony_ci __field(u32, kdeth8) 49062306a36Sopenharmony_ci __field(u32, tidval) 49162306a36Sopenharmony_ci ), 49262306a36Sopenharmony_ci TP_fast_assign( 49362306a36Sopenharmony_ci __le32 *pbc = (__le32 *)hdr->pbc; 49462306a36Sopenharmony_ci __be32 *lrh = (__be32 *)hdr->lrh; 49562306a36Sopenharmony_ci __be32 *bth = (__be32 *)hdr->bth; 49662306a36Sopenharmony_ci __le32 *kdeth = (__le32 *)&hdr->kdeth; 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ci DD_DEV_ASSIGN(dd); 49962306a36Sopenharmony_ci __entry->ctxt = ctxt; 50062306a36Sopenharmony_ci __entry->subctxt = subctxt; 50162306a36Sopenharmony_ci __entry->req = req; 50262306a36Sopenharmony_ci __entry->pbc0 = le32_to_cpu(pbc[0]); 50362306a36Sopenharmony_ci __entry->pbc1 = le32_to_cpu(pbc[1]); 50462306a36Sopenharmony_ci __entry->lrh0 = be32_to_cpu(lrh[0]); 50562306a36Sopenharmony_ci __entry->lrh1 = be32_to_cpu(lrh[1]); 50662306a36Sopenharmony_ci __entry->bth0 = be32_to_cpu(bth[0]); 50762306a36Sopenharmony_ci __entry->bth1 = be32_to_cpu(bth[1]); 50862306a36Sopenharmony_ci __entry->bth2 = be32_to_cpu(bth[2]); 50962306a36Sopenharmony_ci __entry->kdeth0 = le32_to_cpu(kdeth[0]); 51062306a36Sopenharmony_ci __entry->kdeth1 = le32_to_cpu(kdeth[1]); 51162306a36Sopenharmony_ci __entry->kdeth2 = le32_to_cpu(kdeth[2]); 51262306a36Sopenharmony_ci __entry->kdeth3 = le32_to_cpu(kdeth[3]); 51362306a36Sopenharmony_ci __entry->kdeth4 = le32_to_cpu(kdeth[4]); 51462306a36Sopenharmony_ci __entry->kdeth5 = le32_to_cpu(kdeth[5]); 51562306a36Sopenharmony_ci __entry->kdeth6 = le32_to_cpu(kdeth[6]); 51662306a36Sopenharmony_ci __entry->kdeth7 = le32_to_cpu(kdeth[7]); 51762306a36Sopenharmony_ci __entry->kdeth8 = le32_to_cpu(kdeth[8]); 51862306a36Sopenharmony_ci __entry->tidval = tidval; 51962306a36Sopenharmony_ci ), 52062306a36Sopenharmony_ci TP_printk(USDMA_HDR_FORMAT, 52162306a36Sopenharmony_ci __get_str(dev), 52262306a36Sopenharmony_ci __entry->ctxt, 52362306a36Sopenharmony_ci __entry->subctxt, 52462306a36Sopenharmony_ci __entry->req, 52562306a36Sopenharmony_ci __entry->pbc1, 52662306a36Sopenharmony_ci __entry->pbc0, 52762306a36Sopenharmony_ci __entry->lrh0, 52862306a36Sopenharmony_ci __entry->lrh1, 52962306a36Sopenharmony_ci __entry->bth0, 53062306a36Sopenharmony_ci __entry->bth1, 53162306a36Sopenharmony_ci __entry->bth2, 53262306a36Sopenharmony_ci __entry->kdeth0, 53362306a36Sopenharmony_ci __entry->kdeth1, 53462306a36Sopenharmony_ci __entry->kdeth2, 53562306a36Sopenharmony_ci __entry->kdeth3, 53662306a36Sopenharmony_ci __entry->kdeth4, 53762306a36Sopenharmony_ci __entry->kdeth5, 53862306a36Sopenharmony_ci __entry->kdeth6, 53962306a36Sopenharmony_ci __entry->kdeth7, 54062306a36Sopenharmony_ci __entry->kdeth8, 54162306a36Sopenharmony_ci __entry->tidval 54262306a36Sopenharmony_ci ) 54362306a36Sopenharmony_ci); 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_ci#define SDMA_UREQ_FMT \ 54662306a36Sopenharmony_ci "[%s:%u:%u] ver/op=0x%x, iovcnt=%u, npkts=%u, frag=%u, idx=%u" 54762306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_reqinfo, 54862306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 *i), 54962306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, i), 55062306a36Sopenharmony_ci TP_STRUCT__entry( 55162306a36Sopenharmony_ci DD_DEV_ENTRY(dd) 55262306a36Sopenharmony_ci __field(u16, ctxt) 55362306a36Sopenharmony_ci __field(u8, subctxt) 55462306a36Sopenharmony_ci __field(u8, ver_opcode) 55562306a36Sopenharmony_ci __field(u8, iovcnt) 55662306a36Sopenharmony_ci __field(u16, npkts) 55762306a36Sopenharmony_ci __field(u16, fragsize) 55862306a36Sopenharmony_ci __field(u16, comp_idx) 55962306a36Sopenharmony_ci ), 56062306a36Sopenharmony_ci TP_fast_assign( 56162306a36Sopenharmony_ci DD_DEV_ASSIGN(dd); 56262306a36Sopenharmony_ci __entry->ctxt = ctxt; 56362306a36Sopenharmony_ci __entry->subctxt = subctxt; 56462306a36Sopenharmony_ci __entry->ver_opcode = i[0] & 0xff; 56562306a36Sopenharmony_ci __entry->iovcnt = (i[0] >> 8) & 0xff; 56662306a36Sopenharmony_ci __entry->npkts = i[1]; 56762306a36Sopenharmony_ci __entry->fragsize = i[2]; 56862306a36Sopenharmony_ci __entry->comp_idx = i[3]; 56962306a36Sopenharmony_ci ), 57062306a36Sopenharmony_ci TP_printk(SDMA_UREQ_FMT, 57162306a36Sopenharmony_ci __get_str(dev), 57262306a36Sopenharmony_ci __entry->ctxt, 57362306a36Sopenharmony_ci __entry->subctxt, 57462306a36Sopenharmony_ci __entry->ver_opcode, 57562306a36Sopenharmony_ci __entry->iovcnt, 57662306a36Sopenharmony_ci __entry->npkts, 57762306a36Sopenharmony_ci __entry->fragsize, 57862306a36Sopenharmony_ci __entry->comp_idx 57962306a36Sopenharmony_ci ) 58062306a36Sopenharmony_ci); 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci#define usdma_complete_name(st) { st, #st } 58362306a36Sopenharmony_ci#define show_usdma_complete_state(st) \ 58462306a36Sopenharmony_ci __print_symbolic(st, \ 58562306a36Sopenharmony_ci usdma_complete_name(FREE), \ 58662306a36Sopenharmony_ci usdma_complete_name(QUEUED), \ 58762306a36Sopenharmony_ci usdma_complete_name(COMPLETE), \ 58862306a36Sopenharmony_ci usdma_complete_name(ERROR)) 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_completion, 59162306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 idx, 59262306a36Sopenharmony_ci u8 state, int code), 59362306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, idx, state, code), 59462306a36Sopenharmony_ci TP_STRUCT__entry( 59562306a36Sopenharmony_ci DD_DEV_ENTRY(dd) 59662306a36Sopenharmony_ci __field(u16, ctxt) 59762306a36Sopenharmony_ci __field(u8, subctxt) 59862306a36Sopenharmony_ci __field(u16, idx) 59962306a36Sopenharmony_ci __field(u8, state) 60062306a36Sopenharmony_ci __field(int, code) 60162306a36Sopenharmony_ci ), 60262306a36Sopenharmony_ci TP_fast_assign( 60362306a36Sopenharmony_ci DD_DEV_ASSIGN(dd); 60462306a36Sopenharmony_ci __entry->ctxt = ctxt; 60562306a36Sopenharmony_ci __entry->subctxt = subctxt; 60662306a36Sopenharmony_ci __entry->idx = idx; 60762306a36Sopenharmony_ci __entry->state = state; 60862306a36Sopenharmony_ci __entry->code = code; 60962306a36Sopenharmony_ci ), 61062306a36Sopenharmony_ci TP_printk("[%s:%u:%u:%u] SDMA completion state %s (%d)", 61162306a36Sopenharmony_ci __get_str(dev), __entry->ctxt, __entry->subctxt, 61262306a36Sopenharmony_ci __entry->idx, show_usdma_complete_state(__entry->state), 61362306a36Sopenharmony_ci __entry->code) 61462306a36Sopenharmony_ci); 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ciTRACE_EVENT(hfi1_usdma_defer, 61762306a36Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 61862306a36Sopenharmony_ci struct sdma_engine *sde, 61962306a36Sopenharmony_ci struct iowait *wait), 62062306a36Sopenharmony_ci TP_ARGS(pq, sde, wait), 62162306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 62262306a36Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 62362306a36Sopenharmony_ci __field(struct sdma_engine *, sde) 62462306a36Sopenharmony_ci __field(struct iowait *, wait) 62562306a36Sopenharmony_ci __field(int, engine) 62662306a36Sopenharmony_ci __field(int, empty) 62762306a36Sopenharmony_ci ), 62862306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 62962306a36Sopenharmony_ci __entry->pq = pq; 63062306a36Sopenharmony_ci __entry->sde = sde; 63162306a36Sopenharmony_ci __entry->wait = wait; 63262306a36Sopenharmony_ci __entry->engine = sde->this_idx; 63362306a36Sopenharmony_ci __entry->empty = list_empty(&__entry->wait->list); 63462306a36Sopenharmony_ci ), 63562306a36Sopenharmony_ci TP_printk("[%s] pq %llx sde %llx wait %llx engine %d empty %d", 63662306a36Sopenharmony_ci __get_str(dev), 63762306a36Sopenharmony_ci (unsigned long long)__entry->pq, 63862306a36Sopenharmony_ci (unsigned long long)__entry->sde, 63962306a36Sopenharmony_ci (unsigned long long)__entry->wait, 64062306a36Sopenharmony_ci __entry->engine, 64162306a36Sopenharmony_ci __entry->empty 64262306a36Sopenharmony_ci ) 64362306a36Sopenharmony_ci); 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ciTRACE_EVENT(hfi1_usdma_activate, 64662306a36Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 64762306a36Sopenharmony_ci struct iowait *wait, 64862306a36Sopenharmony_ci int reason), 64962306a36Sopenharmony_ci TP_ARGS(pq, wait, reason), 65062306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 65162306a36Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 65262306a36Sopenharmony_ci __field(struct iowait *, wait) 65362306a36Sopenharmony_ci __field(int, reason) 65462306a36Sopenharmony_ci ), 65562306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 65662306a36Sopenharmony_ci __entry->pq = pq; 65762306a36Sopenharmony_ci __entry->wait = wait; 65862306a36Sopenharmony_ci __entry->reason = reason; 65962306a36Sopenharmony_ci ), 66062306a36Sopenharmony_ci TP_printk("[%s] pq %llx wait %llx reason %d", 66162306a36Sopenharmony_ci __get_str(dev), 66262306a36Sopenharmony_ci (unsigned long long)__entry->pq, 66362306a36Sopenharmony_ci (unsigned long long)__entry->wait, 66462306a36Sopenharmony_ci __entry->reason 66562306a36Sopenharmony_ci ) 66662306a36Sopenharmony_ci); 66762306a36Sopenharmony_ci 66862306a36Sopenharmony_ciTRACE_EVENT(hfi1_usdma_we, 66962306a36Sopenharmony_ci TP_PROTO(struct hfi1_user_sdma_pkt_q *pq, 67062306a36Sopenharmony_ci int we_ret), 67162306a36Sopenharmony_ci TP_ARGS(pq, we_ret), 67262306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(pq->dd) 67362306a36Sopenharmony_ci __field(struct hfi1_user_sdma_pkt_q *, pq) 67462306a36Sopenharmony_ci __field(int, state) 67562306a36Sopenharmony_ci __field(int, we_ret) 67662306a36Sopenharmony_ci ), 67762306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(pq->dd); 67862306a36Sopenharmony_ci __entry->pq = pq; 67962306a36Sopenharmony_ci __entry->state = pq->state; 68062306a36Sopenharmony_ci __entry->we_ret = we_ret; 68162306a36Sopenharmony_ci ), 68262306a36Sopenharmony_ci TP_printk("[%s] pq %llx state %d we_ret %d", 68362306a36Sopenharmony_ci __get_str(dev), 68462306a36Sopenharmony_ci (unsigned long long)__entry->pq, 68562306a36Sopenharmony_ci __entry->state, 68662306a36Sopenharmony_ci __entry->we_ret 68762306a36Sopenharmony_ci ) 68862306a36Sopenharmony_ci); 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ciconst char *print_u32_array(struct trace_seq *, u32 *, int); 69162306a36Sopenharmony_ci#define __print_u32_hex(arr, len) print_u32_array(p, arr, len) 69262306a36Sopenharmony_ci 69362306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_user_header_ahg, 69462306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, u16 ctxt, u8 subctxt, u16 req, 69562306a36Sopenharmony_ci u8 sde, u8 ahgidx, u32 *ahg, int len, u32 tidval), 69662306a36Sopenharmony_ci TP_ARGS(dd, ctxt, subctxt, req, sde, ahgidx, ahg, len, tidval), 69762306a36Sopenharmony_ci TP_STRUCT__entry( 69862306a36Sopenharmony_ci DD_DEV_ENTRY(dd) 69962306a36Sopenharmony_ci __field(u16, ctxt) 70062306a36Sopenharmony_ci __field(u8, subctxt) 70162306a36Sopenharmony_ci __field(u16, req) 70262306a36Sopenharmony_ci __field(u8, sde) 70362306a36Sopenharmony_ci __field(u8, idx) 70462306a36Sopenharmony_ci __field(int, len) 70562306a36Sopenharmony_ci __field(u32, tidval) 70662306a36Sopenharmony_ci __array(u32, ahg, 10) 70762306a36Sopenharmony_ci ), 70862306a36Sopenharmony_ci TP_fast_assign( 70962306a36Sopenharmony_ci DD_DEV_ASSIGN(dd); 71062306a36Sopenharmony_ci __entry->ctxt = ctxt; 71162306a36Sopenharmony_ci __entry->subctxt = subctxt; 71262306a36Sopenharmony_ci __entry->req = req; 71362306a36Sopenharmony_ci __entry->sde = sde; 71462306a36Sopenharmony_ci __entry->idx = ahgidx; 71562306a36Sopenharmony_ci __entry->len = len; 71662306a36Sopenharmony_ci __entry->tidval = tidval; 71762306a36Sopenharmony_ci memcpy(__entry->ahg, ahg, len * sizeof(u32)); 71862306a36Sopenharmony_ci ), 71962306a36Sopenharmony_ci TP_printk("[%s:%u:%u:%u] (SDE%u/AHG%u) ahg[0-%d]=(%s) TIDVal=0x%x", 72062306a36Sopenharmony_ci __get_str(dev), 72162306a36Sopenharmony_ci __entry->ctxt, 72262306a36Sopenharmony_ci __entry->subctxt, 72362306a36Sopenharmony_ci __entry->req, 72462306a36Sopenharmony_ci __entry->sde, 72562306a36Sopenharmony_ci __entry->idx, 72662306a36Sopenharmony_ci __entry->len - 1, 72762306a36Sopenharmony_ci __print_u32_hex(__entry->ahg, __entry->len), 72862306a36Sopenharmony_ci __entry->tidval 72962306a36Sopenharmony_ci ) 73062306a36Sopenharmony_ci); 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ciTRACE_EVENT(hfi1_sdma_state, 73362306a36Sopenharmony_ci TP_PROTO(struct sdma_engine *sde, 73462306a36Sopenharmony_ci const char *cstate, 73562306a36Sopenharmony_ci const char *nstate 73662306a36Sopenharmony_ci ), 73762306a36Sopenharmony_ci TP_ARGS(sde, cstate, nstate), 73862306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(sde->dd) 73962306a36Sopenharmony_ci __string(curstate, cstate) 74062306a36Sopenharmony_ci __string(newstate, nstate) 74162306a36Sopenharmony_ci ), 74262306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(sde->dd); 74362306a36Sopenharmony_ci __assign_str(curstate, cstate); 74462306a36Sopenharmony_ci __assign_str(newstate, nstate); 74562306a36Sopenharmony_ci ), 74662306a36Sopenharmony_ci TP_printk("[%s] current state %s new state %s", 74762306a36Sopenharmony_ci __get_str(dev), 74862306a36Sopenharmony_ci __get_str(curstate), 74962306a36Sopenharmony_ci __get_str(newstate) 75062306a36Sopenharmony_ci ) 75162306a36Sopenharmony_ci); 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_ci#define BCT_FORMAT \ 75462306a36Sopenharmony_ci "shared_limit %x vls 0-7 [%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x][%x,%x] 15 [%x,%x]" 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci#define BCT(field) \ 75762306a36Sopenharmony_ci be16_to_cpu( \ 75862306a36Sopenharmony_ci ((struct buffer_control *)__get_dynamic_array(bct))->field \ 75962306a36Sopenharmony_ci ) 76062306a36Sopenharmony_ci 76162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_bct_template, 76262306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, 76362306a36Sopenharmony_ci struct buffer_control *bc), 76462306a36Sopenharmony_ci TP_ARGS(dd, bc), 76562306a36Sopenharmony_ci TP_STRUCT__entry(DD_DEV_ENTRY(dd) 76662306a36Sopenharmony_ci __dynamic_array(u8, bct, sizeof(*bc)) 76762306a36Sopenharmony_ci ), 76862306a36Sopenharmony_ci TP_fast_assign(DD_DEV_ASSIGN(dd); 76962306a36Sopenharmony_ci memcpy(__get_dynamic_array(bct), bc, 77062306a36Sopenharmony_ci sizeof(*bc)); 77162306a36Sopenharmony_ci ), 77262306a36Sopenharmony_ci TP_printk(BCT_FORMAT, 77362306a36Sopenharmony_ci BCT(overall_shared_limit), 77462306a36Sopenharmony_ci 77562306a36Sopenharmony_ci BCT(vl[0].dedicated), 77662306a36Sopenharmony_ci BCT(vl[0].shared), 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_ci BCT(vl[1].dedicated), 77962306a36Sopenharmony_ci BCT(vl[1].shared), 78062306a36Sopenharmony_ci 78162306a36Sopenharmony_ci BCT(vl[2].dedicated), 78262306a36Sopenharmony_ci BCT(vl[2].shared), 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci BCT(vl[3].dedicated), 78562306a36Sopenharmony_ci BCT(vl[3].shared), 78662306a36Sopenharmony_ci 78762306a36Sopenharmony_ci BCT(vl[4].dedicated), 78862306a36Sopenharmony_ci BCT(vl[4].shared), 78962306a36Sopenharmony_ci 79062306a36Sopenharmony_ci BCT(vl[5].dedicated), 79162306a36Sopenharmony_ci BCT(vl[5].shared), 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_ci BCT(vl[6].dedicated), 79462306a36Sopenharmony_ci BCT(vl[6].shared), 79562306a36Sopenharmony_ci 79662306a36Sopenharmony_ci BCT(vl[7].dedicated), 79762306a36Sopenharmony_ci BCT(vl[7].shared), 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci BCT(vl[15].dedicated), 80062306a36Sopenharmony_ci BCT(vl[15].shared) 80162306a36Sopenharmony_ci ) 80262306a36Sopenharmony_ci); 80362306a36Sopenharmony_ci 80462306a36Sopenharmony_ciDEFINE_EVENT(hfi1_bct_template, bct_set, 80562306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc), 80662306a36Sopenharmony_ci TP_ARGS(dd, bc)); 80762306a36Sopenharmony_ci 80862306a36Sopenharmony_ciDEFINE_EVENT(hfi1_bct_template, bct_get, 80962306a36Sopenharmony_ci TP_PROTO(struct hfi1_devdata *dd, struct buffer_control *bc), 81062306a36Sopenharmony_ci TP_ARGS(dd, bc)); 81162306a36Sopenharmony_ci 81262306a36Sopenharmony_ciTRACE_EVENT( 81362306a36Sopenharmony_ci hfi1_qp_send_completion, 81462306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, struct rvt_swqe *wqe, u32 idx), 81562306a36Sopenharmony_ci TP_ARGS(qp, wqe, idx), 81662306a36Sopenharmony_ci TP_STRUCT__entry( 81762306a36Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 81862306a36Sopenharmony_ci __field(struct rvt_swqe *, wqe) 81962306a36Sopenharmony_ci __field(u64, wr_id) 82062306a36Sopenharmony_ci __field(u32, qpn) 82162306a36Sopenharmony_ci __field(u32, qpt) 82262306a36Sopenharmony_ci __field(u32, length) 82362306a36Sopenharmony_ci __field(u32, idx) 82462306a36Sopenharmony_ci __field(u32, ssn) 82562306a36Sopenharmony_ci __field(enum ib_wr_opcode, opcode) 82662306a36Sopenharmony_ci __field(int, send_flags) 82762306a36Sopenharmony_ci ), 82862306a36Sopenharmony_ci TP_fast_assign( 82962306a36Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 83062306a36Sopenharmony_ci __entry->wqe = wqe; 83162306a36Sopenharmony_ci __entry->wr_id = wqe->wr.wr_id; 83262306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 83362306a36Sopenharmony_ci __entry->qpt = qp->ibqp.qp_type; 83462306a36Sopenharmony_ci __entry->length = wqe->length; 83562306a36Sopenharmony_ci __entry->idx = idx; 83662306a36Sopenharmony_ci __entry->ssn = wqe->ssn; 83762306a36Sopenharmony_ci __entry->opcode = wqe->wr.opcode; 83862306a36Sopenharmony_ci __entry->send_flags = wqe->wr.send_flags; 83962306a36Sopenharmony_ci ), 84062306a36Sopenharmony_ci TP_printk( 84162306a36Sopenharmony_ci "[%s] qpn 0x%x qpt %u wqe %p idx %u wr_id %llx length %u ssn %u opcode %x send_flags %x", 84262306a36Sopenharmony_ci __get_str(dev), 84362306a36Sopenharmony_ci __entry->qpn, 84462306a36Sopenharmony_ci __entry->qpt, 84562306a36Sopenharmony_ci __entry->wqe, 84662306a36Sopenharmony_ci __entry->idx, 84762306a36Sopenharmony_ci __entry->wr_id, 84862306a36Sopenharmony_ci __entry->length, 84962306a36Sopenharmony_ci __entry->ssn, 85062306a36Sopenharmony_ci __entry->opcode, 85162306a36Sopenharmony_ci __entry->send_flags 85262306a36Sopenharmony_ci ) 85362306a36Sopenharmony_ci); 85462306a36Sopenharmony_ci 85562306a36Sopenharmony_ciDECLARE_EVENT_CLASS( 85662306a36Sopenharmony_ci hfi1_do_send_template, 85762306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 85862306a36Sopenharmony_ci TP_ARGS(qp, flag), 85962306a36Sopenharmony_ci TP_STRUCT__entry( 86062306a36Sopenharmony_ci DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device)) 86162306a36Sopenharmony_ci __field(u32, qpn) 86262306a36Sopenharmony_ci __field(bool, flag) 86362306a36Sopenharmony_ci ), 86462306a36Sopenharmony_ci TP_fast_assign( 86562306a36Sopenharmony_ci DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device)); 86662306a36Sopenharmony_ci __entry->qpn = qp->ibqp.qp_num; 86762306a36Sopenharmony_ci __entry->flag = flag; 86862306a36Sopenharmony_ci ), 86962306a36Sopenharmony_ci TP_printk( 87062306a36Sopenharmony_ci "[%s] qpn %x flag %d", 87162306a36Sopenharmony_ci __get_str(dev), 87262306a36Sopenharmony_ci __entry->qpn, 87362306a36Sopenharmony_ci __entry->flag 87462306a36Sopenharmony_ci ) 87562306a36Sopenharmony_ci); 87662306a36Sopenharmony_ci 87762306a36Sopenharmony_ciDEFINE_EVENT( 87862306a36Sopenharmony_ci hfi1_do_send_template, hfi1_rc_do_send, 87962306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 88062306a36Sopenharmony_ci TP_ARGS(qp, flag) 88162306a36Sopenharmony_ci); 88262306a36Sopenharmony_ci 88362306a36Sopenharmony_ciDEFINE_EVENT(/* event */ 88462306a36Sopenharmony_ci hfi1_do_send_template, hfi1_rc_do_tid_send, 88562306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 88662306a36Sopenharmony_ci TP_ARGS(qp, flag) 88762306a36Sopenharmony_ci); 88862306a36Sopenharmony_ci 88962306a36Sopenharmony_ciDEFINE_EVENT( 89062306a36Sopenharmony_ci hfi1_do_send_template, hfi1_rc_expired_time_slice, 89162306a36Sopenharmony_ci TP_PROTO(struct rvt_qp *qp, bool flag), 89262306a36Sopenharmony_ci TP_ARGS(qp, flag) 89362306a36Sopenharmony_ci); 89462306a36Sopenharmony_ci 89562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(/* AIP */ 89662306a36Sopenharmony_ci hfi1_ipoib_txq_template, 89762306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 89862306a36Sopenharmony_ci TP_ARGS(txq), 89962306a36Sopenharmony_ci TP_STRUCT__entry(/* entry */ 90062306a36Sopenharmony_ci DD_DEV_ENTRY(txq->priv->dd) 90162306a36Sopenharmony_ci __field(struct hfi1_ipoib_txq *, txq) 90262306a36Sopenharmony_ci __field(struct sdma_engine *, sde) 90362306a36Sopenharmony_ci __field(ulong, head) 90462306a36Sopenharmony_ci __field(ulong, tail) 90562306a36Sopenharmony_ci __field(uint, used) 90662306a36Sopenharmony_ci __field(uint, flow) 90762306a36Sopenharmony_ci __field(int, stops) 90862306a36Sopenharmony_ci __field(int, no_desc) 90962306a36Sopenharmony_ci __field(u8, idx) 91062306a36Sopenharmony_ci __field(u8, stopped) 91162306a36Sopenharmony_ci ), 91262306a36Sopenharmony_ci TP_fast_assign(/* assign */ 91362306a36Sopenharmony_ci DD_DEV_ASSIGN(txq->priv->dd); 91462306a36Sopenharmony_ci __entry->txq = txq; 91562306a36Sopenharmony_ci __entry->sde = txq->sde; 91662306a36Sopenharmony_ci __entry->head = txq->tx_ring.head; 91762306a36Sopenharmony_ci __entry->tail = txq->tx_ring.tail; 91862306a36Sopenharmony_ci __entry->idx = txq->q_idx; 91962306a36Sopenharmony_ci __entry->used = 92062306a36Sopenharmony_ci txq->tx_ring.sent_txreqs - 92162306a36Sopenharmony_ci txq->tx_ring.complete_txreqs; 92262306a36Sopenharmony_ci __entry->flow = txq->flow.as_int; 92362306a36Sopenharmony_ci __entry->stops = atomic_read(&txq->tx_ring.stops); 92462306a36Sopenharmony_ci __entry->no_desc = atomic_read(&txq->tx_ring.no_desc); 92562306a36Sopenharmony_ci __entry->stopped = 92662306a36Sopenharmony_ci __netif_subqueue_stopped(txq->priv->netdev, txq->q_idx); 92762306a36Sopenharmony_ci ), 92862306a36Sopenharmony_ci TP_printk(/* print */ 92962306a36Sopenharmony_ci "[%s] txq %llx idx %u sde %llx:%u cpu %d head %lx tail %lx flow %x used %u stops %d no_desc %d stopped %u", 93062306a36Sopenharmony_ci __get_str(dev), 93162306a36Sopenharmony_ci (unsigned long long)__entry->txq, 93262306a36Sopenharmony_ci __entry->idx, 93362306a36Sopenharmony_ci (unsigned long long)__entry->sde, 93462306a36Sopenharmony_ci __entry->sde ? __entry->sde->this_idx : 0, 93562306a36Sopenharmony_ci __entry->sde ? __entry->sde->cpu : 0, 93662306a36Sopenharmony_ci __entry->head, 93762306a36Sopenharmony_ci __entry->tail, 93862306a36Sopenharmony_ci __entry->flow, 93962306a36Sopenharmony_ci __entry->used, 94062306a36Sopenharmony_ci __entry->stops, 94162306a36Sopenharmony_ci __entry->no_desc, 94262306a36Sopenharmony_ci __entry->stopped 94362306a36Sopenharmony_ci ) 94462306a36Sopenharmony_ci); 94562306a36Sopenharmony_ci 94662306a36Sopenharmony_ciDEFINE_EVENT(/* queue stop */ 94762306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_stop, 94862306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 94962306a36Sopenharmony_ci TP_ARGS(txq) 95062306a36Sopenharmony_ci); 95162306a36Sopenharmony_ci 95262306a36Sopenharmony_ciDEFINE_EVENT(/* queue wake */ 95362306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_wake, 95462306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 95562306a36Sopenharmony_ci TP_ARGS(txq) 95662306a36Sopenharmony_ci); 95762306a36Sopenharmony_ci 95862306a36Sopenharmony_ciDEFINE_EVENT(/* flow flush */ 95962306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_flow_flush, 96062306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 96162306a36Sopenharmony_ci TP_ARGS(txq) 96262306a36Sopenharmony_ci); 96362306a36Sopenharmony_ci 96462306a36Sopenharmony_ciDEFINE_EVENT(/* flow switch */ 96562306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_flow_switch, 96662306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 96762306a36Sopenharmony_ci TP_ARGS(txq) 96862306a36Sopenharmony_ci); 96962306a36Sopenharmony_ci 97062306a36Sopenharmony_ciDEFINE_EVENT(/* wakeup */ 97162306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_wakeup, 97262306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 97362306a36Sopenharmony_ci TP_ARGS(txq) 97462306a36Sopenharmony_ci); 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ciDEFINE_EVENT(/* full */ 97762306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_full, 97862306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 97962306a36Sopenharmony_ci TP_ARGS(txq) 98062306a36Sopenharmony_ci); 98162306a36Sopenharmony_ci 98262306a36Sopenharmony_ciDEFINE_EVENT(/* queued */ 98362306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_queued, 98462306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 98562306a36Sopenharmony_ci TP_ARGS(txq) 98662306a36Sopenharmony_ci); 98762306a36Sopenharmony_ci 98862306a36Sopenharmony_ciDEFINE_EVENT(/* xmit_stopped */ 98962306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_xmit_stopped, 99062306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 99162306a36Sopenharmony_ci TP_ARGS(txq) 99262306a36Sopenharmony_ci); 99362306a36Sopenharmony_ci 99462306a36Sopenharmony_ciDEFINE_EVENT(/* xmit_unstopped */ 99562306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_xmit_unstopped, 99662306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 99762306a36Sopenharmony_ci TP_ARGS(txq) 99862306a36Sopenharmony_ci); 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(/* AIP */ 100162306a36Sopenharmony_ci hfi1_ipoib_tx_template, 100262306a36Sopenharmony_ci TP_PROTO(struct ipoib_txreq *tx, u32 idx), 100362306a36Sopenharmony_ci TP_ARGS(tx, idx), 100462306a36Sopenharmony_ci TP_STRUCT__entry(/* entry */ 100562306a36Sopenharmony_ci DD_DEV_ENTRY(tx->txq->priv->dd) 100662306a36Sopenharmony_ci __field(struct ipoib_txreq *, tx) 100762306a36Sopenharmony_ci __field(struct hfi1_ipoib_txq *, txq) 100862306a36Sopenharmony_ci __field(struct sk_buff *, skb) 100962306a36Sopenharmony_ci __field(ulong, idx) 101062306a36Sopenharmony_ci ), 101162306a36Sopenharmony_ci TP_fast_assign(/* assign */ 101262306a36Sopenharmony_ci DD_DEV_ASSIGN(tx->txq->priv->dd); 101362306a36Sopenharmony_ci __entry->tx = tx; 101462306a36Sopenharmony_ci __entry->skb = tx->skb; 101562306a36Sopenharmony_ci __entry->txq = tx->txq; 101662306a36Sopenharmony_ci __entry->idx = idx; 101762306a36Sopenharmony_ci ), 101862306a36Sopenharmony_ci TP_printk(/* print */ 101962306a36Sopenharmony_ci "[%s] tx %llx txq %llx,%u skb %llx idx %lu", 102062306a36Sopenharmony_ci __get_str(dev), 102162306a36Sopenharmony_ci (unsigned long long)__entry->tx, 102262306a36Sopenharmony_ci (unsigned long long)__entry->txq, 102362306a36Sopenharmony_ci __entry->txq ? __entry->txq->q_idx : 0, 102462306a36Sopenharmony_ci (unsigned long long)__entry->skb, 102562306a36Sopenharmony_ci __entry->idx 102662306a36Sopenharmony_ci ) 102762306a36Sopenharmony_ci); 102862306a36Sopenharmony_ci 102962306a36Sopenharmony_ciDEFINE_EVENT(/* produce */ 103062306a36Sopenharmony_ci hfi1_ipoib_tx_template, hfi1_tx_produce, 103162306a36Sopenharmony_ci TP_PROTO(struct ipoib_txreq *tx, u32 idx), 103262306a36Sopenharmony_ci TP_ARGS(tx, idx) 103362306a36Sopenharmony_ci); 103462306a36Sopenharmony_ci 103562306a36Sopenharmony_ciDEFINE_EVENT(/* consume */ 103662306a36Sopenharmony_ci hfi1_ipoib_tx_template, hfi1_tx_consume, 103762306a36Sopenharmony_ci TP_PROTO(struct ipoib_txreq *tx, u32 idx), 103862306a36Sopenharmony_ci TP_ARGS(tx, idx) 103962306a36Sopenharmony_ci); 104062306a36Sopenharmony_ci 104162306a36Sopenharmony_ciDEFINE_EVENT(/* alloc_tx */ 104262306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_alloc_tx, 104362306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 104462306a36Sopenharmony_ci TP_ARGS(txq) 104562306a36Sopenharmony_ci); 104662306a36Sopenharmony_ci 104762306a36Sopenharmony_ciDEFINE_EVENT(/* poll */ 104862306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_poll, 104962306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 105062306a36Sopenharmony_ci TP_ARGS(txq) 105162306a36Sopenharmony_ci); 105262306a36Sopenharmony_ci 105362306a36Sopenharmony_ciDEFINE_EVENT(/* complete */ 105462306a36Sopenharmony_ci hfi1_ipoib_txq_template, hfi1_txq_complete, 105562306a36Sopenharmony_ci TP_PROTO(struct hfi1_ipoib_txq *txq), 105662306a36Sopenharmony_ci TP_ARGS(txq) 105762306a36Sopenharmony_ci); 105862306a36Sopenharmony_ci 105962306a36Sopenharmony_ci#endif /* __HFI1_TRACE_TX_H */ 106062306a36Sopenharmony_ci 106162306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 106262306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE 106362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 106462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_tx 106562306a36Sopenharmony_ci#include <trace/define_trace.h> 1066