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