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 11 struct 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 18 static inline struct mlx5_rdma_counter * to_mcounter(struct rdma_counter * counter)19to_mcounter(struct rdma_counter *counter) 20 { 21 return container_of(counter, struct mlx5_rdma_counter, rdma_counter); 22 } 23 24 int mlx5_ib_counters_init(struct mlx5_ib_dev *dev); 25 void mlx5_ib_counters_cleanup(struct mlx5_ib_dev *dev); 26 void mlx5_ib_counters_clear_description(struct ib_counters *counters); 27 int mlx5_ib_flow_counters_set_data(struct ib_counters *ibcounters, 28 struct mlx5_ib_create_flow *ucmd); 29 u16 mlx5_ib_get_counters_id(struct mlx5_ib_dev *dev, u32 port_num); 30 bool 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