common/mlx5: fix device list operations concurrency
[dpdk.git] / drivers / common / mlx5 / mlx5_common_private.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2021 Mellanox Technologies, Ltd
3  */
4
5 #ifndef MLX5_COMMON_PRIVATE_H
6 #define MLX5_COMMON_PRIVATE_H
7
8 #include <rte_pci.h>
9 #include <rte_bus_auxiliary.h>
10
11 #include "mlx5_common.h"
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif /* __cplusplus */
16
17 /* Common bus driver: */
18
19 struct mlx5_common_device {
20         struct rte_device *dev;
21         TAILQ_ENTRY(mlx5_common_device) next;
22         uint32_t classes_loaded;
23 };
24
25 int mlx5_common_dev_probe(struct rte_device *eal_dev);
26 int mlx5_common_dev_remove(struct rte_device *eal_dev);
27 int mlx5_common_dev_dma_map(struct rte_device *dev, void *addr, uint64_t iova,
28                             size_t len);
29 int mlx5_common_dev_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova,
30                               size_t len);
31
32 /* Common PCI bus driver: */
33
34 void mlx5_common_pci_init(void);
35 void mlx5_common_driver_on_register_pci(struct mlx5_class_driver *driver);
36 bool mlx5_dev_pci_match(const struct mlx5_class_driver *drv,
37                         const struct rte_device *dev);
38
39 /* Common auxiliary bus driver: */
40 void mlx5_common_auxiliary_init(void);
41 struct ibv_device *mlx5_get_aux_ibv_device(
42                 const struct rte_auxiliary_device *dev);
43 int mlx5_auxiliary_get_pci_str(const struct rte_auxiliary_device *dev,
44                                char *addr, size_t size);
45
46 #ifdef __cplusplus
47 }
48 #endif /* __cplusplus */
49
50 #endif /* MLX5_COMMON_PRIVATE_H */