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