common/mlx5: add glue functions on Windows
[dpdk.git] / drivers / common / mlx5 / windows / mlx5_glue.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2020 Mellanox Technologies, Ltd
3  */
4
5 #ifndef MLX5_GLUE_H_
6 #define MLX5_GLUE_H_
7
8 #include <stddef.h>
9 #include <stdint.h>
10
11 #include <rte_byteorder.h>
12 #include <mlx5_win_defs.h>
13
14 #ifndef MLX5_GLUE_VERSION
15 #define MLX5_GLUE_VERSION ""
16 #endif
17
18 /* LIB_GLUE_VERSION must be updated every time this structure is modified. */
19 struct mlx5_glue {
20         const char *version;
21         void *(*devx_obj_create)(void *ctx,
22                                  void *in, size_t inlen,
23                                  void *out, size_t outlen);
24         int (*devx_obj_destroy)(void *obj);
25         int (*devx_obj_query)(void *obj,
26                               void *in, size_t inlen,
27                               void *out, size_t outlen);
28         int (*devx_obj_modify)(void *obj,
29                                void *in, size_t inlen,
30                                void *out, size_t outlen);
31         int (*devx_general_cmd)(void *ctx,
32                                void *in, size_t inlen,
33                                void *out, size_t outlen);
34         int (*devx_umem_dereg)(void *umem);
35         void *(*devx_umem_reg)(void *ctx,
36                         void *addr, size_t size,
37                         uint32_t access, uint32_t *id);
38         void *(*devx_alloc_uar)(void *ctx,
39                         uint32_t flags);
40         void (*devx_free_uar)(void *uar);
41         void *(*get_device_list)(int *num_devices);
42         void (*free_device_list)(void *list);
43         void *(*open_device)(void *device);
44         int (*close_device)(void *ctx);
45         int (*query_device)(void *device_bdf, void *dev_inf);
46         void* (*query_hca_iseg)(void *ctx, uint32_t *cb_iseg);
47         int (*devx_obj_query_async)(void *obj,
48                                     const void *in, size_t inlen,
49                                     size_t outlen, uint64_t wr_id,
50                                     void *cmd_comp);
51         void *(*devx_fs_rule_add)(void *ctx, void *in, uint32_t inlen);
52         int (*devx_fs_rule_del)(void *flow);
53         int (*devx_query_eqn)(void *context, uint32_t cpus, uint32_t *eqn);
54 };
55
56 extern const struct mlx5_glue *mlx5_glue;
57
58 #endif /* MLX5_GLUE_H_ */