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 */ 51