xref: /dpdk/lib/dmadev/rte_dmadev_trace_fp.h (revision 112327c220befef14129e4852e8df46e60410128)
1*112327c2SChengwen Feng /* SPDX-License-Identifier: BSD-3-Clause
2*112327c2SChengwen Feng  * Copyright(c) 2024 HiSilicon Limited
3*112327c2SChengwen Feng  */
4*112327c2SChengwen Feng 
5*112327c2SChengwen Feng #ifndef RTE_DMADEV_TRACE_FP_H
6*112327c2SChengwen Feng #define RTE_DMADEV_TRACE_FP_H
7*112327c2SChengwen Feng 
8*112327c2SChengwen Feng /**
9*112327c2SChengwen Feng  * @file
10*112327c2SChengwen Feng  *
11*112327c2SChengwen Feng  * API for dmadev fastpath trace support
12*112327c2SChengwen Feng  */
13*112327c2SChengwen Feng 
14*112327c2SChengwen Feng #include <rte_trace_point.h>
15*112327c2SChengwen Feng 
16*112327c2SChengwen Feng #ifdef __cplusplus
17*112327c2SChengwen Feng extern "C" {
18*112327c2SChengwen Feng #endif
19*112327c2SChengwen Feng 
20*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
21*112327c2SChengwen Feng 	rte_dma_trace_stats_get,
22*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan,
23*112327c2SChengwen Feng 			     struct rte_dma_stats *stats, int ret),
24*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
25*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
26*112327c2SChengwen Feng 	rte_trace_point_emit_u64(stats->submitted);
27*112327c2SChengwen Feng 	rte_trace_point_emit_u64(stats->completed);
28*112327c2SChengwen Feng 	rte_trace_point_emit_u64(stats->errors);
29*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
30*112327c2SChengwen Feng )
31*112327c2SChengwen Feng 
32*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
33*112327c2SChengwen Feng 	rte_dma_trace_vchan_status,
34*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan,
35*112327c2SChengwen Feng 			     enum rte_dma_vchan_status *status, int ret),
36*112327c2SChengwen Feng #ifdef _RTE_TRACE_POINT_REGISTER_H_
37*112327c2SChengwen Feng 	enum rte_dma_vchan_status __status = 0;
38*112327c2SChengwen Feng 	status = &__status;
39*112327c2SChengwen Feng #endif /* _RTE_TRACE_POINT_REGISTER_H_ */
40*112327c2SChengwen Feng 	int vchan_status = *status;
41*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
42*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
43*112327c2SChengwen Feng 	rte_trace_point_emit_int(vchan_status);
44*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
45*112327c2SChengwen Feng )
46*112327c2SChengwen Feng 
47*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
48*112327c2SChengwen Feng 	rte_dma_trace_copy,
49*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, rte_iova_t src,
50*112327c2SChengwen Feng 			     rte_iova_t dst, uint32_t length, uint64_t flags,
51*112327c2SChengwen Feng 			     int ret),
52*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
53*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
54*112327c2SChengwen Feng 	rte_trace_point_emit_u64(src);
55*112327c2SChengwen Feng 	rte_trace_point_emit_u64(dst);
56*112327c2SChengwen Feng 	rte_trace_point_emit_u32(length);
57*112327c2SChengwen Feng 	rte_trace_point_emit_u64(flags);
58*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
59*112327c2SChengwen Feng )
60*112327c2SChengwen Feng 
61*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
62*112327c2SChengwen Feng 	rte_dma_trace_copy_sg,
63*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan,
64*112327c2SChengwen Feng 			     struct rte_dma_sge *src, struct rte_dma_sge *dst,
65*112327c2SChengwen Feng 			     uint16_t nb_src, uint16_t nb_dst, uint64_t flags,
66*112327c2SChengwen Feng 			     int ret),
67*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
68*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
69*112327c2SChengwen Feng 	rte_trace_point_emit_ptr(src);
70*112327c2SChengwen Feng 	rte_trace_point_emit_ptr(dst);
71*112327c2SChengwen Feng 	rte_trace_point_emit_u16(nb_src);
72*112327c2SChengwen Feng 	rte_trace_point_emit_u16(nb_dst);
73*112327c2SChengwen Feng 	rte_trace_point_emit_u64(flags);
74*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
75*112327c2SChengwen Feng )
76*112327c2SChengwen Feng 
77*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
78*112327c2SChengwen Feng 	rte_dma_trace_fill,
79*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, uint64_t pattern,
80*112327c2SChengwen Feng 			     rte_iova_t dst, uint32_t length, uint64_t flags,
81*112327c2SChengwen Feng 			     int ret),
82*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
83*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
84*112327c2SChengwen Feng 	rte_trace_point_emit_u64(pattern);
85*112327c2SChengwen Feng 	rte_trace_point_emit_u64(dst);
86*112327c2SChengwen Feng 	rte_trace_point_emit_u32(length);
87*112327c2SChengwen Feng 	rte_trace_point_emit_u64(flags);
88*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
89*112327c2SChengwen Feng )
90*112327c2SChengwen Feng 
91*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
92*112327c2SChengwen Feng 	rte_dma_trace_submit,
93*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, int ret),
94*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
95*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
96*112327c2SChengwen Feng 	rte_trace_point_emit_int(ret);
97*112327c2SChengwen Feng )
98*112327c2SChengwen Feng 
99*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
100*112327c2SChengwen Feng 	rte_dma_trace_completed,
101*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan,
102*112327c2SChengwen Feng 			     const uint16_t nb_cpls, uint16_t *last_idx,
103*112327c2SChengwen Feng 			     bool *has_error, uint16_t ret),
104*112327c2SChengwen Feng #ifdef _RTE_TRACE_POINT_REGISTER_H_
105*112327c2SChengwen Feng 	uint16_t __last_idx = 0;
106*112327c2SChengwen Feng 	bool __has_error = false;
107*112327c2SChengwen Feng 	last_idx = &__last_idx;
108*112327c2SChengwen Feng 	has_error = &__has_error;
109*112327c2SChengwen Feng #endif /* _RTE_TRACE_POINT_REGISTER_H_ */
110*112327c2SChengwen Feng 	int has_error_val = *has_error;
111*112327c2SChengwen Feng 	int last_idx_val = *last_idx;
112*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
113*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
114*112327c2SChengwen Feng 	rte_trace_point_emit_u16(nb_cpls);
115*112327c2SChengwen Feng 	rte_trace_point_emit_int(last_idx_val);
116*112327c2SChengwen Feng 	rte_trace_point_emit_int(has_error_val);
117*112327c2SChengwen Feng 	rte_trace_point_emit_u16(ret);
118*112327c2SChengwen Feng )
119*112327c2SChengwen Feng 
120*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
121*112327c2SChengwen Feng 	rte_dma_trace_completed_status,
122*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan,
123*112327c2SChengwen Feng 			     const uint16_t nb_cpls, uint16_t *last_idx,
124*112327c2SChengwen Feng 			     enum rte_dma_status_code *status, uint16_t ret),
125*112327c2SChengwen Feng #ifdef _RTE_TRACE_POINT_REGISTER_H_
126*112327c2SChengwen Feng 	uint16_t __last_idx = 0;
127*112327c2SChengwen Feng 	last_idx = &__last_idx;
128*112327c2SChengwen Feng #endif /* _RTE_TRACE_POINT_REGISTER_H_ */
129*112327c2SChengwen Feng 	int last_idx_val = *last_idx;
130*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
131*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
132*112327c2SChengwen Feng 	rte_trace_point_emit_u16(nb_cpls);
133*112327c2SChengwen Feng 	rte_trace_point_emit_int(last_idx_val);
134*112327c2SChengwen Feng 	rte_trace_point_emit_ptr(status);
135*112327c2SChengwen Feng 	rte_trace_point_emit_u16(ret);
136*112327c2SChengwen Feng )
137*112327c2SChengwen Feng 
138*112327c2SChengwen Feng RTE_TRACE_POINT_FP(
139*112327c2SChengwen Feng 	rte_dma_trace_burst_capacity,
140*112327c2SChengwen Feng 	RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, uint16_t ret),
141*112327c2SChengwen Feng 	rte_trace_point_emit_i16(dev_id);
142*112327c2SChengwen Feng 	rte_trace_point_emit_u16(vchan);
143*112327c2SChengwen Feng 	rte_trace_point_emit_u16(ret);
144*112327c2SChengwen Feng )
145*112327c2SChengwen Feng 
146*112327c2SChengwen Feng #ifdef __cplusplus
147*112327c2SChengwen Feng }
148*112327c2SChengwen Feng #endif
149*112327c2SChengwen Feng 
150*112327c2SChengwen Feng #endif /* RTE_DMADEV_TRACE_FP_H */
151