1a1e910f5SViacheslav Ovsiienko /* SPDX-License-Identifier: BSD-3-Clause 2a1e910f5SViacheslav Ovsiienko * Copyright (c) 2023 NVIDIA Corporation & Affiliates 3a1e910f5SViacheslav Ovsiienko */ 4a1e910f5SViacheslav Ovsiienko 5a1e910f5SViacheslav Ovsiienko #ifndef RTE_PMD_MLX5_TRACE_H_ 6a1e910f5SViacheslav Ovsiienko #define RTE_PMD_MLX5_TRACE_H_ 7a1e910f5SViacheslav Ovsiienko 8a1e910f5SViacheslav Ovsiienko /** 9a1e910f5SViacheslav Ovsiienko * @file 10a1e910f5SViacheslav Ovsiienko * 11a1e910f5SViacheslav Ovsiienko * API for mlx5 PMD trace support 12a1e910f5SViacheslav Ovsiienko */ 13a1e910f5SViacheslav Ovsiienko 14a1e910f5SViacheslav Ovsiienko #include <mlx5_prm.h> 15a1e910f5SViacheslav Ovsiienko #include <rte_mbuf.h> 16a1e910f5SViacheslav Ovsiienko #include <rte_trace_point.h> 17a1e910f5SViacheslav Ovsiienko 18719834a6SMattias Rönnblom #ifdef __cplusplus 19719834a6SMattias Rönnblom extern "C" { 20719834a6SMattias Rönnblom #endif 21719834a6SMattias Rönnblom 22a1e910f5SViacheslav Ovsiienko /* TX burst subroutines trace points. */ 23a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 24a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_entry, 25*02932480STim Martin RTE_TRACE_POINT_ARGS(uint64_t real_time, uint16_t port_id, uint16_t queue_id), 26*02932480STim Martin rte_trace_point_emit_u64(real_time); 27a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(port_id); 28a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(queue_id); 29a1e910f5SViacheslav Ovsiienko ) 30a1e910f5SViacheslav Ovsiienko 31a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 32a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_exit, 33*02932480STim Martin RTE_TRACE_POINT_ARGS(uint64_t real_time, uint16_t nb_sent, uint16_t nb_req), 34*02932480STim Martin rte_trace_point_emit_u64(real_time); 35a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(nb_sent); 36a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(nb_req); 37a1e910f5SViacheslav Ovsiienko ) 38a1e910f5SViacheslav Ovsiienko 39a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 40a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_wqe, 41*02932480STim Martin RTE_TRACE_POINT_ARGS(uint64_t real_time, uint32_t opcode), 42*02932480STim Martin rte_trace_point_emit_u64(real_time); 43a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u32(opcode); 44a1e910f5SViacheslav Ovsiienko ) 45a1e910f5SViacheslav Ovsiienko 46a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 47a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_wait, 48a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_ARGS(uint64_t ts), 49a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u64(ts); 50a1e910f5SViacheslav Ovsiienko ) 51a1e910f5SViacheslav Ovsiienko 52a1e910f5SViacheslav Ovsiienko 53a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 54a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_push, 55a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_ARGS(const struct rte_mbuf *mbuf, uint16_t wqe_id), 56a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_ptr(mbuf); 57a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u32(mbuf->pkt_len); 58a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(mbuf->nb_segs); 59a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(wqe_id); 60a1e910f5SViacheslav Ovsiienko ) 61a1e910f5SViacheslav Ovsiienko 62a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_FP( 63a1e910f5SViacheslav Ovsiienko rte_pmd_mlx5_trace_tx_complete, 64a1e910f5SViacheslav Ovsiienko RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, 65a1e910f5SViacheslav Ovsiienko uint16_t wqe_id, uint64_t ts), 66a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(port_id); 67a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(queue_id); 68a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u64(ts); 69a1e910f5SViacheslav Ovsiienko rte_trace_point_emit_u16(wqe_id); 70a1e910f5SViacheslav Ovsiienko ) 71a1e910f5SViacheslav Ovsiienko 72a1e910f5SViacheslav Ovsiienko #ifdef __cplusplus 73a1e910f5SViacheslav Ovsiienko } 74a1e910f5SViacheslav Ovsiienko #endif 75a1e910f5SViacheslav Ovsiienko 76a1e910f5SViacheslav Ovsiienko #endif /* RTE_PMD_MLX5_TRACE_H_ */ 77