xref: /dpdk/drivers/common/mlx5/windows/mlx5_glue.h (revision cb91f12f4a0c094b27110ccb7c187b8d260e685f)
17525ebd8STal Shnaiderman /* SPDX-License-Identifier: BSD-3-Clause
27525ebd8STal Shnaiderman  * Copyright 2020 Mellanox Technologies, Ltd
37525ebd8STal Shnaiderman  */
47525ebd8STal Shnaiderman 
57525ebd8STal Shnaiderman #ifndef MLX5_GLUE_H_
67525ebd8STal Shnaiderman #define MLX5_GLUE_H_
77525ebd8STal Shnaiderman 
87525ebd8STal Shnaiderman #include <stddef.h>
97525ebd8STal Shnaiderman #include <stdint.h>
107525ebd8STal Shnaiderman 
117525ebd8STal Shnaiderman #include <rte_byteorder.h>
127525ebd8STal Shnaiderman #include <mlx5_win_defs.h>
137525ebd8STal Shnaiderman 
147525ebd8STal Shnaiderman #ifndef MLX5_GLUE_VERSION
157525ebd8STal Shnaiderman #define MLX5_GLUE_VERSION ""
167525ebd8STal Shnaiderman #endif
177525ebd8STal Shnaiderman 
18bd935fe3SOphir Munk #ifndef HAVE_MLX5DV_DR
19bd935fe3SOphir Munk enum  mlx5dv_dr_domain_type { unused, };
20bd935fe3SOphir Munk struct mlx5dv_dr_domain;
21bd935fe3SOphir Munk struct mlx5dv_dr_action;
22bd935fe3SOphir Munk #endif
23bd935fe3SOphir Munk 
24bd935fe3SOphir Munk #ifndef HAVE_MLX5_DR_CREATE_ACTION_FLOW_SAMPLE
25bd935fe3SOphir Munk struct mlx5dv_dr_flow_sampler_attr {
26bd935fe3SOphir Munk 	uint32_t sample_ratio;
27bd935fe3SOphir Munk 	void *default_next_table;
28bd935fe3SOphir Munk 	size_t num_sample_actions;
29bd935fe3SOphir Munk 	struct mlx5dv_dr_action **sample_actions;
30bd935fe3SOphir Munk 	uint64_t action;
31bd935fe3SOphir Munk };
32bd935fe3SOphir Munk #endif
33bd935fe3SOphir Munk 
34bd935fe3SOphir Munk #ifndef HAVE_MLX5_DR_CREATE_ACTION_DEST_ARRAY
35bd935fe3SOphir Munk enum mlx5dv_dr_action_dest_type {
36bd935fe3SOphir Munk 	MLX5DV_DR_ACTION_DEST,
37bd935fe3SOphir Munk 	MLX5DV_DR_ACTION_DEST_REFORMAT,
38bd935fe3SOphir Munk };
39bd935fe3SOphir Munk struct mlx5dv_dr_action_dest_reformat {
40bd935fe3SOphir Munk 	struct mlx5dv_dr_action *reformat;
41bd935fe3SOphir Munk 	struct mlx5dv_dr_action *dest;
42bd935fe3SOphir Munk };
43bd935fe3SOphir Munk struct mlx5dv_dr_action_dest_attr {
44bd935fe3SOphir Munk 	enum mlx5dv_dr_action_dest_type type;
45bd935fe3SOphir Munk 	union {
46bd935fe3SOphir Munk 		struct mlx5dv_dr_action *dest;
47bd935fe3SOphir Munk 		struct mlx5dv_dr_action_dest_reformat *dest_reformat;
48bd935fe3SOphir Munk 	};
49bd935fe3SOphir Munk };
50bd935fe3SOphir Munk #endif
51bd935fe3SOphir Munk 
523014718fSAdham Masarwah enum {
533014718fSAdham Masarwah 	ALL_PROMISC,
543014718fSAdham Masarwah 	MC_PROMISC,
553014718fSAdham Masarwah };
563014718fSAdham Masarwah 
577525ebd8STal Shnaiderman /* LIB_GLUE_VERSION must be updated every time this structure is modified. */
587525ebd8STal Shnaiderman struct mlx5_glue {
597525ebd8STal Shnaiderman 	const char *version;
607525ebd8STal Shnaiderman 	void *(*devx_obj_create)(void *ctx,
617525ebd8STal Shnaiderman 				 void *in, size_t inlen,
627525ebd8STal Shnaiderman 				 void *out, size_t outlen);
637525ebd8STal Shnaiderman 	int (*devx_obj_destroy)(void *obj);
647525ebd8STal Shnaiderman 	int (*devx_obj_query)(void *obj,
657525ebd8STal Shnaiderman 			      void *in, size_t inlen,
667525ebd8STal Shnaiderman 			      void *out, size_t outlen);
677525ebd8STal Shnaiderman 	int (*devx_obj_modify)(void *obj,
687525ebd8STal Shnaiderman 			       void *in, size_t inlen,
697525ebd8STal Shnaiderman 			       void *out, size_t outlen);
707525ebd8STal Shnaiderman 	int (*devx_general_cmd)(void *ctx,
717525ebd8STal Shnaiderman 			       void *in, size_t inlen,
727525ebd8STal Shnaiderman 			       void *out, size_t outlen);
737525ebd8STal Shnaiderman 	int (*devx_umem_dereg)(void *umem);
747525ebd8STal Shnaiderman 	void *(*devx_umem_reg)(void *ctx,
757525ebd8STal Shnaiderman 			void *addr, size_t size,
767525ebd8STal Shnaiderman 			uint32_t access, uint32_t *id);
777525ebd8STal Shnaiderman 	void *(*devx_alloc_uar)(void *ctx,
787525ebd8STal Shnaiderman 			uint32_t flags);
797525ebd8STal Shnaiderman 	void (*devx_free_uar)(void *uar);
807525ebd8STal Shnaiderman 	void *(*get_device_list)(int *num_devices);
817525ebd8STal Shnaiderman 	void (*free_device_list)(void *list);
827525ebd8STal Shnaiderman 	void *(*open_device)(void *device);
837525ebd8STal Shnaiderman 	int (*close_device)(void *ctx);
847525ebd8STal Shnaiderman 	int (*query_device)(void *device_bdf, void *dev_inf);
857525ebd8STal Shnaiderman 	void* (*query_hca_iseg)(void *ctx, uint32_t *cb_iseg);
867525ebd8STal Shnaiderman 	int (*devx_obj_query_async)(void *obj,
877525ebd8STal Shnaiderman 				    const void *in, size_t inlen,
887525ebd8STal Shnaiderman 				    size_t outlen, uint64_t wr_id,
897525ebd8STal Shnaiderman 				    void *cmd_comp);
907525ebd8STal Shnaiderman 	void *(*devx_fs_rule_add)(void *ctx, void *in, uint32_t inlen);
917525ebd8STal Shnaiderman 	int (*devx_fs_rule_del)(void *flow);
927525ebd8STal Shnaiderman 	int (*devx_query_eqn)(void *context, uint32_t cpus, uint32_t *eqn);
9399d7c45cSTal Shnaiderman 	int (*query_rt_values)(void *ctx, void *devx_clock);
94165e5d07STal Shnaiderman 	int (*devx_init_showdown_event)(void *ctx);
953014718fSAdham Masarwah 	int (*devx_set_promisc_vport)(void *ctx, uint32_t promisc_type, uint8_t f_enable);
96*cb91f12fSAdham Masarwah 	int (*devx_get_mtu)(void *ctx, uint32_t *mtu);
97*cb91f12fSAdham Masarwah 	int (*devx_set_mtu)(void *ctx, uint32_t mtu);
987525ebd8STal Shnaiderman };
997525ebd8STal Shnaiderman 
1007525ebd8STal Shnaiderman extern const struct mlx5_glue *mlx5_glue;
1017525ebd8STal Shnaiderman 
1027525ebd8STal Shnaiderman #endif /* MLX5_GLUE_H_ */
103