Linux 6.9-rc1
[linux-2.6-microblaze.git] / drivers / net / ethernet / mellanox / mlx5 / core / qos.h
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