1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2 /* Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ 3 4 #undef TRACE_SYSTEM 5 #define TRACE_SYSTEM mlx5 6 7 #if !defined(_MLX5_ESW_TP_) || defined(TRACE_HEADER_MULTI_READ) 8 #define _MLX5_ESW_TP_ 9 10 #include <linux/tracepoint.h> 11 #include "eswitch.h" 12 #include "qos.h" 13 14 TRACE_EVENT(mlx5_esw_vport_qos_destroy, 15 TP_PROTO(const struct mlx5_core_dev *dev, const struct mlx5_vport *vport), 16 TP_ARGS(dev, vport), 17 TP_STRUCT__entry(__string(devname, dev_name(dev->device)) 18 __field(unsigned short, vport_id) 19 __field(unsigned int, sched_elem_ix) 20 ), 21 TP_fast_assign(__assign_str(devname); 22 __entry->vport_id = vport->vport; 23 __entry->sched_elem_ix = mlx5_esw_qos_vport_get_sched_elem_ix(vport); 24 ), 25 TP_printk("(%s) vport=%hu sched_elem_ix=%u\n", 26 __get_str(devname), __entry->vport_id, __entry->sched_elem_ix 27 ) 28 ); 29 30 DECLARE_EVENT_CLASS(mlx5_esw_vport_qos_template, 31 TP_PROTO(const struct mlx5_core_dev *dev, const struct mlx5_vport *vport, 32 u32 bw_share, u32 max_rate), 33 TP_ARGS(dev, vport, bw_share, max_rate), 34 TP_STRUCT__entry(__string(devname, dev_name(dev->device)) 35 __field(unsigned short, vport_id) 36 __field(unsigned int, sched_elem_ix) 37 __field(unsigned int, bw_share) 38 __field(unsigned int, max_rate) 39 __field(void *, parent) 40 ), 41 TP_fast_assign(__assign_str(devname); 42 __entry->vport_id = vport->vport; 43 __entry->sched_elem_ix = mlx5_esw_qos_vport_get_sched_elem_ix(vport); 44 __entry->bw_share = bw_share; 45 __entry->max_rate = max_rate; 46 __entry->parent = mlx5_esw_qos_vport_get_parent(vport); 47 ), 48 TP_printk("(%s) vport=%hu sched_elem_ix=%u bw_share=%u, max_rate=%u parent=%p\n", 49 __get_str(devname), __entry->vport_id, __entry->sched_elem_ix, 50 __entry->bw_share, __entry->max_rate, __entry->parent 51 ) 52 ); 53 54 DEFINE_EVENT(mlx5_esw_vport_qos_template, mlx5_esw_vport_qos_create, 55 TP_PROTO(const struct mlx5_core_dev *dev, const struct mlx5_vport *vport, 56 u32 bw_share, u32 max_rate), 57 TP_ARGS(dev, vport, bw_share, max_rate) 58 ); 59 60 DEFINE_EVENT(mlx5_esw_vport_qos_template, mlx5_esw_vport_qos_config, 61 TP_PROTO(const struct mlx5_core_dev *dev, const struct mlx5_vport *vport, 62 u32 bw_share, u32 max_rate), 63 TP_ARGS(dev, vport, bw_share, max_rate) 64 ); 65 66 DECLARE_EVENT_CLASS(mlx5_esw_node_qos_template, 67 TP_PROTO(const struct mlx5_core_dev *dev, 68 const struct mlx5_esw_sched_node *node, 69 unsigned int tsar_ix), 70 TP_ARGS(dev, node, tsar_ix), 71 TP_STRUCT__entry(__string(devname, dev_name(dev->device)) 72 __field(const void *, node) 73 __field(unsigned int, tsar_ix) 74 ), 75 TP_fast_assign(__assign_str(devname); 76 __entry->node = node; 77 __entry->tsar_ix = tsar_ix; 78 ), 79 TP_printk("(%s) node=%p tsar_ix=%u\n", 80 __get_str(devname), __entry->node, __entry->tsar_ix 81 ) 82 ); 83 84 DEFINE_EVENT(mlx5_esw_node_qos_template, mlx5_esw_node_qos_create, 85 TP_PROTO(const struct mlx5_core_dev *dev, 86 const struct mlx5_esw_sched_node *node, 87 unsigned int tsar_ix), 88 TP_ARGS(dev, node, tsar_ix) 89 ); 90 91 DEFINE_EVENT(mlx5_esw_node_qos_template, mlx5_esw_node_qos_destroy, 92 TP_PROTO(const struct mlx5_core_dev *dev, 93 const struct mlx5_esw_sched_node *node, 94 unsigned int tsar_ix), 95 TP_ARGS(dev, node, tsar_ix) 96 ); 97 98 TRACE_EVENT(mlx5_esw_node_qos_config, 99 TP_PROTO(const struct mlx5_core_dev *dev, 100 const struct mlx5_esw_sched_node *node, 101 unsigned int tsar_ix, u32 bw_share, u32 max_rate), 102 TP_ARGS(dev, node, tsar_ix, bw_share, max_rate), 103 TP_STRUCT__entry(__string(devname, dev_name(dev->device)) 104 __field(const void *, node) 105 __field(unsigned int, tsar_ix) 106 __field(unsigned int, bw_share) 107 __field(unsigned int, max_rate) 108 ), 109 TP_fast_assign(__assign_str(devname); 110 __entry->node = node; 111 __entry->tsar_ix = tsar_ix; 112 __entry->bw_share = bw_share; 113 __entry->max_rate = max_rate; 114 ), 115 TP_printk("(%s) node=%p tsar_ix=%u bw_share=%u max_rate=%u\n", 116 __get_str(devname), __entry->node, __entry->tsar_ix, 117 __entry->bw_share, __entry->max_rate 118 ) 119 ); 120 #endif /* _MLX5_ESW_TP_ */ 121 122 /* This part must be outside protection */ 123 #undef TRACE_INCLUDE_PATH 124 #define TRACE_INCLUDE_PATH esw/diag 125 #undef TRACE_INCLUDE_FILE 126 #define TRACE_INCLUDE_FILE qos_tracepoint 127 #include <trace/define_trace.h> 128