drivers/infiniband/hw/hfi1/trace_tx.h

Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/hfi1/trace_tx.h

File Facts

System
Linux kernel
Corpus path
drivers/infiniband/hw/hfi1/trace_tx.h
Extension
.h
Size
29011 bytes
Lines
1066
Domain
Driver Families
Bucket
drivers/infiniband
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#if !defined(__HFI1_TRACE_TX_H) || defined(TRACE_HEADER_MULTI_READ)
#define __HFI1_TRACE_TX_H

#include <linux/tracepoint.h>
#include <linux/trace_seq.h>

#include "hfi.h"
#include "mad.h"
#include "sdma.h"
#include "ipoib.h"
#include "user_sdma.h"

const char *parse_sdma_flags(struct trace_seq *p, u64 desc0, u64 desc1);

#define __parse_sdma_flags(desc0, desc1) parse_sdma_flags(p, desc0, desc1)

#undef TRACE_SYSTEM
#define TRACE_SYSTEM hfi1_tx

TRACE_EVENT(hfi1_piofree,
	    TP_PROTO(struct send_context *sc, int extra),
	    TP_ARGS(sc, extra),
	    TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd)
	    __field(u32, sw_index)
	    __field(u32, hw_context)
	    __field(int, extra)
	    ),
	    TP_fast_assign(DD_DEV_ASSIGN(sc->dd);
	    __entry->sw_index = sc->sw_index;
	    __entry->hw_context = sc->hw_context;
	    __entry->extra = extra;
	    ),
	    TP_printk("[%s] ctxt %u(%u) extra %d",
		      __get_str(dev),
		      __entry->sw_index,
		      __entry->hw_context,
		      __entry->extra
	    )
);

TRACE_EVENT(hfi1_wantpiointr,
	    TP_PROTO(struct send_context *sc, u32 needint, u64 credit_ctrl),
	    TP_ARGS(sc, needint, credit_ctrl),
	    TP_STRUCT__entry(DD_DEV_ENTRY(sc->dd)
			__field(u32, sw_index)
			__field(u32, hw_context)
			__field(u32, needint)
			__field(u64, credit_ctrl)
			),
	    TP_fast_assign(DD_DEV_ASSIGN(sc->dd);
			__entry->sw_index = sc->sw_index;
			__entry->hw_context = sc->hw_context;
			__entry->needint = needint;
			__entry->credit_ctrl = credit_ctrl;
			),
	    TP_printk("[%s] ctxt %u(%u) on %d credit_ctrl 0x%llx",
		      __get_str(dev),
		      __entry->sw_index,
		      __entry->hw_context,
		      __entry->needint,
		      (unsigned long long)__entry->credit_ctrl
		      )
);

DECLARE_EVENT_CLASS(hfi1_qpsleepwakeup_template,
		    TP_PROTO(struct rvt_qp *qp, u32 flags),
		    TP_ARGS(qp, flags),
		    TP_STRUCT__entry(
		    DD_DEV_ENTRY(dd_from_ibdev(qp->ibqp.device))
		    __field(u32, qpn)
		    __field(u32, flags)
		    __field(u32, s_flags)
		    __field(u32, ps_flags)
		    __field(unsigned long, iow_flags)
		    ),
		    TP_fast_assign(
		    DD_DEV_ASSIGN(dd_from_ibdev(qp->ibqp.device));
		    __entry->flags = flags;
		    __entry->qpn = qp->ibqp.qp_num;
		    __entry->s_flags = qp->s_flags;
		    __entry->ps_flags =
			((struct hfi1_qp_priv *)qp->priv)->s_flags;
		    __entry->iow_flags =
			((struct hfi1_qp_priv *)qp->priv)->s_iowait.flags;
		    ),
		    TP_printk(
		    "[%s] qpn 0x%x flags 0x%x s_flags 0x%x ps_flags 0x%x iow_flags 0x%lx",
		    __get_str(dev),
		    __entry->qpn,
		    __entry->flags,

Annotation

Implementation Notes