net/mlx5: add Linux-specific file with getter functions
[dpdk.git] / drivers / net / mlx5 / linux / mlx5_os.c
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 }