1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2 /* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ 3 4 #ifndef __MLX5_QOS_H 5 #define __MLX5_QOS_H 6 7 #include "mlx5_core.h" 8 9 #define MLX5_DEBUG_QOS_MASK BIT(4) 10 11 #define qos_err(mdev, fmt, ...) \ 12 mlx5_core_err(mdev, "QoS: " fmt, ##__VA_ARGS__) 13 #define qos_warn(mdev, fmt, ...) \ 14 mlx5_core_warn(mdev, "QoS: " fmt, ##__VA_ARGS__) 15 #define qos_dbg(mdev, fmt, ...) \ 16 mlx5_core_dbg_mask(mdev, MLX5_DEBUG_QOS_MASK, "QoS: " fmt, ##__VA_ARGS__) 17 18 bool mlx5_qos_is_supported(struct mlx5_core_dev *mdev); 19 int mlx5_qos_max_leaf_nodes(struct mlx5_core_dev *mdev); 20 21 int mlx5_qos_create_leaf_node(struct mlx5_core_dev *mdev, u32 parent_id, 22 u32 bw_share, u32 max_avg_bw, u32 *id); 23 int mlx5_qos_create_inner_node(struct mlx5_core_dev *mdev, u32 parent_id, 24 u32 bw_share, u32 max_avg_bw, u32 *id); 25 int mlx5_qos_create_root_node(struct mlx5_core_dev *mdev, u32 *id); 26 int mlx5_qos_update_node(struct mlx5_core_dev *mdev, u32 bw_share, 27 u32 max_avg_bw, u32 id); 28 int mlx5_qos_destroy_node(struct mlx5_core_dev *mdev, u32 id); 29 30 #endif 31