1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2/*
3 * Copyright (c) 2013-2020, Mellanox Technologies inc. All rights reserved.
4 */
5
6#ifndef _MLX5_IB_COUNTERS_H
7#define _MLX5_IB_COUNTERS_H
8
9#include "mlx5_ib.h"
10
11struct mlx5_rdma_counter {
12 struct rdma_counter rdma_counter;
13
14 struct mlx5_fc *fc[MLX5_IB_OPCOUNTER_MAX];
15 struct xarray qpn_opfc_xa;
16};
17
18static inline struct mlx5_rdma_counter *
19to_mcounter(struct rdma_counter *counter)
20{
21 return container_of(counter, struct mlx5_rdma_counter, rdma_counter);
22}
23
24int mlx5_ib_counters_init(struct mlx5_ib_dev *dev);
25void mlx5_ib_counters_cleanup(struct mlx5_ib_dev *dev);
26void mlx5_ib_counters_clear_description(struct ib_counters *counters);
27int mlx5_ib_flow_counters_set_data(struct ib_counters *ibcounters,
28 struct mlx5_ib_create_flow *ucmd);
29u16 mlx5_ib_get_counters_id(struct mlx5_ib_dev *dev, u32 port_num);
30bool mlx5r_is_opfc_shared_and_in_use(struct mlx5_ib_op_fc *opfcs, u32 type,
31 struct mlx5_ib_op_fc **opfc);
32#endif /* _MLX5_IB_COUNTERS_H */
33

source code of linux/drivers/infiniband/hw/mlx5/counters.h