1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright 2015 6WIND S.A. 3 * Copyright 2020 Mellanox Technologies, Ltd 4 */ 5 6 #include <stddef.h> 7 #include <unistd.h> 8 #include <string.h> 9 #include <stdint.h> 10 #include <stdlib.h> 11 #include <errno.h> 12 #include <net/if.h> 13 #include <sys/mman.h> 14 #include <linux/rtnetlink.h> 15 #include <fcntl.h> 16 17 /* Verbs header. */ 18 /* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */ 19 #ifdef PEDANTIC 20 #pragma GCC diagnostic ignored "-Wpedantic" 21 #endif 22 #include <infiniband/verbs.h> 23 #ifdef PEDANTIC 24 #pragma GCC diagnostic error "-Wpedantic" 25 #endif 26 27 #include <rte_malloc.h> 28 #include <rte_ethdev_driver.h> 29 #include <rte_ethdev_pci.h> 30 #include <rte_pci.h> 31 #include <rte_bus_pci.h> 32 #include <rte_common.h> 33 #include <rte_kvargs.h> 34 #include <rte_rwlock.h> 35 #include <rte_spinlock.h> 36 #include <rte_string_fns.h> 37 #include <rte_alarm.h> 38 39 #include <mlx5_glue.h> 40 #include <mlx5_devx_cmds.h> 41 #include <mlx5_common.h> 42 43 #include "mlx5_defs.h" 44 #include "mlx5.h" 45 #include "mlx5_utils.h" 46 #include "mlx5_rxtx.h" 47 #include "mlx5_autoconf.h" 48 #include "mlx5_mr.h" 49 #include "mlx5_flow.h" 50 #include "rte_pmd_mlx5.h" 51 52 /** 53 * Get ibv device name. Given an ibv_context pointer - return a 54 * pointer to the corresponding device name. 55 * 56 * @param[in] ctx 57 * Pointer to ibv context. 58 * 59 * @return 60 * Pointer to device name if ctx is valid, NULL otherwise. 61 */ 62 const char * 63 mlx5_os_get_ctx_device_name(void *ctx) 64 { 65 if (!ctx) 66 return NULL; 67 return ((struct ibv_context *)ctx)->device->name; 68 } 69 70 /** 71 * Get ibv device path name. Given an ibv_context pointer - return a 72 * pointer to the corresponding device path name. 73 * 74 * @param[in] ctx 75 * Pointer to ibv context. 76 * 77 * @return 78 * Pointer to device path name if ctx is valid, NULL otherwise. 79 */ 80 const char * 81 mlx5_os_get_ctx_device_path(void *ctx) 82 { 83 if (!ctx) 84 return NULL; 85 86 return ((struct ibv_context *)ctx)->device->ibdev_path; 87 } 88