xref: /dpdk/drivers/net/mlx5/hws/mlx5dr_cmd.h (revision ac8415cfe760aa1ac58dc3d5f178bbb3a806ef19)
1365cdf5fSErez Shitrit /* SPDX-License-Identifier: BSD-3-Clause
2365cdf5fSErez Shitrit  * Copyright (c) 2022 NVIDIA Corporation & Affiliates
3365cdf5fSErez Shitrit  */
4365cdf5fSErez Shitrit 
5365cdf5fSErez Shitrit #ifndef MLX5DR_CMD_H_
6365cdf5fSErez Shitrit #define MLX5DR_CMD_H_
7365cdf5fSErez Shitrit 
8eefaf43dSShun Hao enum mlx5dr_cmd_ext_dest_flags {
9eefaf43dSShun Hao 	MLX5DR_CMD_EXT_DEST_REFORMAT = 1 << 0,
10eefaf43dSShun Hao 	MLX5DR_CMD_EXT_DEST_ESW_OWNER_VHCA_ID = 1 << 1,
11eefaf43dSShun Hao };
12eefaf43dSShun Hao 
13eefaf43dSShun Hao struct mlx5dr_cmd_set_fte_dest {
14eefaf43dSShun Hao 	uint8_t destination_type;
15eefaf43dSShun Hao 	uint32_t destination_id;
16eefaf43dSShun Hao 	enum mlx5dr_cmd_ext_dest_flags ext_flags;
1771ad5095SHaifei Luo 	struct mlx5dr_devx_obj *ext_reformat;
18eefaf43dSShun Hao 	uint16_t esw_owner_vhca_id;
19eefaf43dSShun Hao };
20eefaf43dSShun Hao 
21e1df1578SHamdan Igbaria struct mlx5dr_cmd_set_fte_attr {
22e1df1578SHamdan Igbaria 	uint32_t action_flags;
23eefaf43dSShun Hao 	uint8_t ignore_flow_level;
24eefaf43dSShun Hao 	uint8_t flow_source;
2571ad5095SHaifei Luo 	uint8_t extended_dest;
262b2ce5ddSHamdan Igbaria 	uint8_t encrypt_decrypt_type;
272b2ce5ddSHamdan Igbaria 	uint32_t encrypt_decrypt_obj_id;
282b2ce5ddSHamdan Igbaria 	uint32_t packet_reformat_id;
29eefaf43dSShun Hao 	uint32_t dests_num;
30eefaf43dSShun Hao 	struct mlx5dr_cmd_set_fte_dest *dests;
31e1df1578SHamdan Igbaria };
32e1df1578SHamdan Igbaria 
33365cdf5fSErez Shitrit struct mlx5dr_cmd_ft_create_attr {
34365cdf5fSErez Shitrit 	uint8_t type;
35365cdf5fSErez Shitrit 	uint8_t level;
36365cdf5fSErez Shitrit 	bool rtc_valid;
372b2ce5ddSHamdan Igbaria 	uint8_t reformat_en;
38365cdf5fSErez Shitrit };
39365cdf5fSErez Shitrit 
40ce946c7dSErez Shitrit #define ACCESS_KEY_LEN	32
41ce946c7dSErez Shitrit 
42365cdf5fSErez Shitrit struct mlx5dr_cmd_ft_modify_attr {
43365cdf5fSErez Shitrit 	uint8_t type;
44365cdf5fSErez Shitrit 	uint32_t rtc_id_0;
45365cdf5fSErez Shitrit 	uint32_t rtc_id_1;
46365cdf5fSErez Shitrit 	uint32_t table_miss_id;
47365cdf5fSErez Shitrit 	uint8_t table_miss_action;
48365cdf5fSErez Shitrit 	uint64_t modify_fs;
49365cdf5fSErez Shitrit };
50365cdf5fSErez Shitrit 
51004edb48SHamdan Igbaria struct mlx5dr_cmd_ft_query_attr {
52004edb48SHamdan Igbaria 	uint8_t type;
53004edb48SHamdan Igbaria };
54004edb48SHamdan Igbaria 
55365cdf5fSErez Shitrit struct mlx5dr_cmd_fg_attr {
56365cdf5fSErez Shitrit 	uint32_t table_id;
57365cdf5fSErez Shitrit 	uint32_t table_type;
58365cdf5fSErez Shitrit };
59365cdf5fSErez Shitrit 
60365cdf5fSErez Shitrit struct mlx5dr_cmd_forward_tbl {
61365cdf5fSErez Shitrit 	struct mlx5dr_devx_obj	*ft;
62365cdf5fSErez Shitrit 	struct mlx5dr_devx_obj	*fg;
63365cdf5fSErez Shitrit 	struct mlx5dr_devx_obj	*fte;
64365cdf5fSErez Shitrit 	uint32_t refcount;
65365cdf5fSErez Shitrit };
66365cdf5fSErez Shitrit 
67365cdf5fSErez Shitrit struct mlx5dr_cmd_rtc_create_attr {
68365cdf5fSErez Shitrit 	uint32_t pd;
69365cdf5fSErez Shitrit 	uint32_t stc_base;
70365cdf5fSErez Shitrit 	uint32_t ste_base;
71365cdf5fSErez Shitrit 	uint32_t ste_offset;
72365cdf5fSErez Shitrit 	uint32_t miss_ft_id;
7393ee3bd8SAlex Vesker 	bool fw_gen_wqe;
74365cdf5fSErez Shitrit 	uint8_t update_index_mode;
7507f35716SYevgeny Kliteynik 	uint8_t access_index_mode;
7607f35716SYevgeny Kliteynik 	uint8_t num_hash_definer;
77365cdf5fSErez Shitrit 	uint8_t log_depth;
78365cdf5fSErez Shitrit 	uint8_t log_size;
79365cdf5fSErez Shitrit 	uint8_t table_type;
8093ee3bd8SAlex Vesker 	uint8_t match_definer_0;
8193ee3bd8SAlex Vesker 	uint8_t match_definer_1;
82bbddd062SAlex Vesker 	uint8_t reparse_mode;
8393ee3bd8SAlex Vesker 	bool is_frst_jumbo;
8493ee3bd8SAlex Vesker 	bool is_scnd_range;
85a5230507SHamdan Igbaria 	bool is_compare;
86365cdf5fSErez Shitrit };
87365cdf5fSErez Shitrit 
88ed695274SYevgeny Kliteynik struct mlx5dr_cmd_alias_obj_create_attr {
89ed695274SYevgeny Kliteynik 	uint32_t obj_id;
90ed695274SYevgeny Kliteynik 	uint16_t vhca_id;
91ed695274SYevgeny Kliteynik 	uint16_t obj_type;
92ce946c7dSErez Shitrit 	uint8_t access_key[ACCESS_KEY_LEN];
93ed695274SYevgeny Kliteynik };
94ed695274SYevgeny Kliteynik 
95365cdf5fSErez Shitrit struct mlx5dr_cmd_stc_create_attr {
96365cdf5fSErez Shitrit 	uint8_t log_obj_range;
97365cdf5fSErez Shitrit 	uint8_t table_type;
98365cdf5fSErez Shitrit };
99365cdf5fSErez Shitrit 
100365cdf5fSErez Shitrit struct mlx5dr_cmd_stc_modify_attr {
101365cdf5fSErez Shitrit 	uint32_t stc_offset;
102365cdf5fSErez Shitrit 	uint8_t action_offset;
103bbddd062SAlex Vesker 	uint8_t reparse_mode;
104365cdf5fSErez Shitrit 	enum mlx5_ifc_stc_action_type action_type;
105365cdf5fSErez Shitrit 	union {
106365cdf5fSErez Shitrit 		uint32_t id; /* TIRN, TAG, FT ID, STE ID */
107365cdf5fSErez Shitrit 		struct {
108365cdf5fSErez Shitrit 			uint8_t decap;
109365cdf5fSErez Shitrit 			uint16_t start_anchor;
110365cdf5fSErez Shitrit 			uint16_t end_anchor;
111365cdf5fSErez Shitrit 		} remove_header;
112365cdf5fSErez Shitrit 		struct {
113365cdf5fSErez Shitrit 			uint32_t arg_id;
114365cdf5fSErez Shitrit 			uint32_t pattern_id;
115365cdf5fSErez Shitrit 		} modify_header;
116365cdf5fSErez Shitrit 		struct {
117365cdf5fSErez Shitrit 			__be64 data;
118365cdf5fSErez Shitrit 		} modify_action;
119365cdf5fSErez Shitrit 		struct {
120365cdf5fSErez Shitrit 			uint32_t arg_id;
121365cdf5fSErez Shitrit 			uint32_t header_size;
122365cdf5fSErez Shitrit 			uint8_t is_inline;
123365cdf5fSErez Shitrit 			uint8_t encap;
124365cdf5fSErez Shitrit 			uint16_t insert_anchor;
125365cdf5fSErez Shitrit 			uint16_t insert_offset;
126525ac5efSHamdan Igbaria 			uint8_t push_esp;
127365cdf5fSErez Shitrit 		} insert_header;
128365cdf5fSErez Shitrit 		struct {
129365cdf5fSErez Shitrit 			uint8_t aso_type;
130365cdf5fSErez Shitrit 			uint32_t devx_obj_id;
131365cdf5fSErez Shitrit 			uint8_t return_reg_id;
132365cdf5fSErez Shitrit 		} aso;
133365cdf5fSErez Shitrit 		struct {
134365cdf5fSErez Shitrit 			uint16_t vport_num;
135365cdf5fSErez Shitrit 			uint16_t esw_owner_vhca_id;
136*ac8415cfSErez Shitrit 			uint8_t eswitch_owner_vhca_id_valid;
137365cdf5fSErez Shitrit 		} vport;
138365cdf5fSErez Shitrit 		struct {
139365cdf5fSErez Shitrit 			struct mlx5dr_pool_chunk ste;
140365cdf5fSErez Shitrit 			struct mlx5dr_pool *ste_pool;
141365cdf5fSErez Shitrit 			uint32_t ste_obj_id; /* Internal */
142365cdf5fSErez Shitrit 			uint32_t match_definer_id;
143365cdf5fSErez Shitrit 			uint8_t log_hash_size;
144365cdf5fSErez Shitrit 		} ste_table;
145365cdf5fSErez Shitrit 		struct {
146365cdf5fSErez Shitrit 			uint16_t start_anchor;
147365cdf5fSErez Shitrit 			uint16_t num_of_words;
148365cdf5fSErez Shitrit 		} remove_words;
149365cdf5fSErez Shitrit 
150365cdf5fSErez Shitrit 		uint32_t dest_table_id;
151365cdf5fSErez Shitrit 		uint32_t dest_tir_num;
152365cdf5fSErez Shitrit 	};
153365cdf5fSErez Shitrit };
154365cdf5fSErez Shitrit 
155365cdf5fSErez Shitrit struct mlx5dr_cmd_ste_create_attr {
156365cdf5fSErez Shitrit 	uint8_t log_obj_range;
157365cdf5fSErez Shitrit 	uint8_t table_type;
158365cdf5fSErez Shitrit };
159365cdf5fSErez Shitrit 
160365cdf5fSErez Shitrit struct mlx5dr_cmd_definer_create_attr {
161365cdf5fSErez Shitrit 	uint8_t *dw_selector;
162365cdf5fSErez Shitrit 	uint8_t *byte_selector;
163365cdf5fSErez Shitrit 	uint8_t *match_mask;
164365cdf5fSErez Shitrit };
165365cdf5fSErez Shitrit 
166365cdf5fSErez Shitrit struct mlx5dr_cmd_sq_create_attr {
167365cdf5fSErez Shitrit 	uint32_t cqn;
168365cdf5fSErez Shitrit 	uint32_t pdn;
169365cdf5fSErez Shitrit 	uint32_t page_id;
170365cdf5fSErez Shitrit 	uint32_t dbr_id;
171365cdf5fSErez Shitrit 	uint32_t wq_id;
172365cdf5fSErez Shitrit 	uint32_t log_wq_sz;
173d4444de8SViacheslav Ovsiienko 	uint32_t ts_format;
174365cdf5fSErez Shitrit };
175365cdf5fSErez Shitrit 
176720439d8SYevgeny Kliteynik struct mlx5dr_cmd_allow_other_vhca_access_attr {
177720439d8SYevgeny Kliteynik 	uint16_t obj_type;
178720439d8SYevgeny Kliteynik 	uint32_t obj_id;
179ce946c7dSErez Shitrit 	uint8_t access_key[ACCESS_KEY_LEN];
180720439d8SYevgeny Kliteynik };
181720439d8SYevgeny Kliteynik 
18225cb2d2aSHamdan Igbaria struct mlx5dr_cmd_packet_reformat_create_attr {
18325cb2d2aSHamdan Igbaria 	uint8_t type;
18425cb2d2aSHamdan Igbaria 	size_t data_sz;
18525cb2d2aSHamdan Igbaria 	void *data;
18625cb2d2aSHamdan Igbaria 	uint8_t reformat_param_0;
18725cb2d2aSHamdan Igbaria };
18825cb2d2aSHamdan Igbaria 
189365cdf5fSErez Shitrit struct mlx5dr_cmd_query_ft_caps {
190365cdf5fSErez Shitrit 	uint8_t max_level;
191365cdf5fSErez Shitrit 	uint8_t reparse;
192b81f95caSItamar Gozlan 	uint8_t ignore_flow_level_rtc_valid;
193365cdf5fSErez Shitrit };
194365cdf5fSErez Shitrit 
195365cdf5fSErez Shitrit struct mlx5dr_cmd_query_vport_caps {
196365cdf5fSErez Shitrit 	uint16_t vport_num;
197365cdf5fSErez Shitrit 	uint16_t esw_owner_vhca_id;
198365cdf5fSErez Shitrit };
199365cdf5fSErez Shitrit 
20012802ab2SAlex Vesker struct mlx5dr_cmd_generate_wqe_attr {
20112802ab2SAlex Vesker 	uint8_t *wqe_ctrl;
20212802ab2SAlex Vesker 	uint8_t *gta_ctrl;
20312802ab2SAlex Vesker 	uint8_t *gta_data_0;
20412802ab2SAlex Vesker 	uint8_t *gta_data_1;
20512802ab2SAlex Vesker 	uint32_t pdn;
20612802ab2SAlex Vesker };
20712802ab2SAlex Vesker 
208365cdf5fSErez Shitrit struct mlx5dr_cmd_query_caps {
209365cdf5fSErez Shitrit 	uint32_t wire_regc_mask;
210365cdf5fSErez Shitrit 	uint32_t flex_protocols;
211365cdf5fSErez Shitrit 	uint8_t wqe_based_update;
212365cdf5fSErez Shitrit 	uint8_t rtc_reparse_mode;
213365cdf5fSErez Shitrit 	uint16_t ste_format;
214365cdf5fSErez Shitrit 	uint8_t rtc_index_mode;
215365cdf5fSErez Shitrit 	uint8_t ste_alloc_log_max;
216365cdf5fSErez Shitrit 	uint8_t ste_alloc_log_gran;
217365cdf5fSErez Shitrit 	uint8_t stc_alloc_log_max;
218365cdf5fSErez Shitrit 	uint8_t stc_alloc_log_gran;
219365cdf5fSErez Shitrit 	uint8_t rtc_log_depth_max;
220365cdf5fSErez Shitrit 	uint8_t format_select_gtpu_dw_0;
221365cdf5fSErez Shitrit 	uint8_t format_select_gtpu_dw_1;
2227f5e6de5SItamar Gozlan 	uint8_t flow_table_hash_type;
223365cdf5fSErez Shitrit 	uint8_t format_select_gtpu_dw_2;
224365cdf5fSErez Shitrit 	uint8_t format_select_gtpu_ext_dw_0;
22551f68dbaSYevgeny Kliteynik 	uint8_t access_index_mode;
2267f5e6de5SItamar Gozlan 	uint32_t linear_match_definer;
227365cdf5fSErez Shitrit 	bool full_dw_jumbo_support;
22851f68dbaSYevgeny Kliteynik 	bool rtc_hash_split_table;
22951f68dbaSYevgeny Kliteynik 	bool rtc_linear_lookup_table;
23067acee3aSAlex Vesker 	uint32_t supp_type_gen_wqe;
23167acee3aSAlex Vesker 	uint8_t rtc_max_hash_def_gen_wqe;
23267acee3aSAlex Vesker 	uint16_t supp_ste_format_gen_wqe;
233365cdf5fSErez Shitrit 	struct mlx5dr_cmd_query_ft_caps nic_ft;
234365cdf5fSErez Shitrit 	struct mlx5dr_cmd_query_ft_caps fdb_ft;
235365cdf5fSErez Shitrit 	bool eswitch_manager;
236eefaf43dSShun Hao 	uint8_t merged_eswitch;
237365cdf5fSErez Shitrit 	uint32_t eswitch_manager_vport_number;
238365cdf5fSErez Shitrit 	uint8_t log_header_modify_argument_granularity;
239365cdf5fSErez Shitrit 	uint8_t log_header_modify_argument_max_alloc;
240d4444de8SViacheslav Ovsiienko 	uint8_t sq_ts_format;
2411f8fc88dSAlex Vesker 	uint8_t fdb_tir_stc;
242365cdf5fSErez Shitrit 	uint64_t definer_format_sup;
243365cdf5fSErez Shitrit 	uint32_t trivial_match_definer;
2447ab100f6SErez Shitrit 	uint32_t vhca_id;
245b2300900SYevgeny Kliteynik 	bool cross_vhca_resources;
246ce946c7dSErez Shitrit 	uint32_t shared_vhca_id;
247365cdf5fSErez Shitrit 	char fw_ver[64];
24881cf20a2SHamdan Igbaria 	bool ipsec_offload;
2492acdf09bSHamdan Igbaria 	uint8_t encap_entropy_hash_type;
2502acdf09bSHamdan Igbaria 	bool roce;
2512acdf09bSHamdan Igbaria 	uint16_t roce_max_src_udp_port;
2522acdf09bSHamdan Igbaria 	uint16_t roce_min_src_udp_port;
253365cdf5fSErez Shitrit };
254365cdf5fSErez Shitrit 
255365cdf5fSErez Shitrit int mlx5dr_cmd_destroy_obj(struct mlx5dr_devx_obj *devx_obj);
256365cdf5fSErez Shitrit 
257365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
258365cdf5fSErez Shitrit mlx5dr_cmd_flow_table_create(struct ibv_context *ctx,
259365cdf5fSErez Shitrit 			     struct mlx5dr_cmd_ft_create_attr *ft_attr);
260365cdf5fSErez Shitrit 
261365cdf5fSErez Shitrit int
262365cdf5fSErez Shitrit mlx5dr_cmd_flow_table_modify(struct mlx5dr_devx_obj *devx_obj,
263365cdf5fSErez Shitrit 			     struct mlx5dr_cmd_ft_modify_attr *ft_attr);
264365cdf5fSErez Shitrit 
265004edb48SHamdan Igbaria int
266004edb48SHamdan Igbaria mlx5dr_cmd_flow_table_query(struct mlx5dr_devx_obj *devx_obj,
267004edb48SHamdan Igbaria 			    struct mlx5dr_cmd_ft_query_attr *ft_attr,
268004edb48SHamdan Igbaria 			    uint64_t *icm_addr_0, uint64_t *icm_addr_1);
269004edb48SHamdan Igbaria 
270365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
271365cdf5fSErez Shitrit mlx5dr_cmd_rtc_create(struct ibv_context *ctx,
272365cdf5fSErez Shitrit 		      struct mlx5dr_cmd_rtc_create_attr *rtc_attr);
273365cdf5fSErez Shitrit 
274365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
275365cdf5fSErez Shitrit mlx5dr_cmd_stc_create(struct ibv_context *ctx,
276365cdf5fSErez Shitrit 		      struct mlx5dr_cmd_stc_create_attr *stc_attr);
277365cdf5fSErez Shitrit 
278365cdf5fSErez Shitrit int
279365cdf5fSErez Shitrit mlx5dr_cmd_stc_modify(struct mlx5dr_devx_obj *devx_obj,
280365cdf5fSErez Shitrit 		      struct mlx5dr_cmd_stc_modify_attr *stc_attr);
281365cdf5fSErez Shitrit 
28212802ab2SAlex Vesker int
28312802ab2SAlex Vesker mlx5dr_cmd_generate_wqe(struct ibv_context *ctx,
28412802ab2SAlex Vesker 			struct mlx5dr_cmd_generate_wqe_attr *attr,
28512802ab2SAlex Vesker 			struct mlx5_cqe64 *ret_cqe);
28612802ab2SAlex Vesker 
287365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
288365cdf5fSErez Shitrit mlx5dr_cmd_ste_create(struct ibv_context *ctx,
289365cdf5fSErez Shitrit 		      struct mlx5dr_cmd_ste_create_attr *ste_attr);
290365cdf5fSErez Shitrit 
291365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
292365cdf5fSErez Shitrit mlx5dr_cmd_definer_create(struct ibv_context *ctx,
293365cdf5fSErez Shitrit 			  struct mlx5dr_cmd_definer_create_attr *def_attr);
294365cdf5fSErez Shitrit 
295365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
296365cdf5fSErez Shitrit mlx5dr_cmd_sq_create(struct ibv_context *ctx,
297365cdf5fSErez Shitrit 		     struct mlx5dr_cmd_sq_create_attr *attr);
298365cdf5fSErez Shitrit 
299365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
300365cdf5fSErez Shitrit mlx5dr_cmd_arg_create(struct ibv_context *ctx,
301365cdf5fSErez Shitrit 		      uint16_t log_obj_range,
302365cdf5fSErez Shitrit 		      uint32_t pd);
303365cdf5fSErez Shitrit 
304365cdf5fSErez Shitrit struct mlx5dr_devx_obj *
305365cdf5fSErez Shitrit mlx5dr_cmd_header_modify_pattern_create(struct ibv_context *ctx,
306365cdf5fSErez Shitrit 					uint32_t pattern_length,
307365cdf5fSErez Shitrit 					uint8_t *actions);
308365cdf5fSErez Shitrit 
309ed695274SYevgeny Kliteynik struct mlx5dr_devx_obj *
310e1df1578SHamdan Igbaria mlx5dr_cmd_set_fte(struct ibv_context *ctx,
311e1df1578SHamdan Igbaria 		   uint32_t table_type,
312e1df1578SHamdan Igbaria 		   uint32_t table_id,
313e1df1578SHamdan Igbaria 		   uint32_t group_id,
314e1df1578SHamdan Igbaria 		   struct mlx5dr_cmd_set_fte_attr *fte_attr);
315e1df1578SHamdan Igbaria 
316e1df1578SHamdan Igbaria struct mlx5dr_cmd_forward_tbl *
317e1df1578SHamdan Igbaria mlx5dr_cmd_forward_tbl_create(struct ibv_context *ctx,
318e1df1578SHamdan Igbaria 			      struct mlx5dr_cmd_ft_create_attr *ft_attr,
319e1df1578SHamdan Igbaria 			      struct mlx5dr_cmd_set_fte_attr *fte_attr);
320e1df1578SHamdan Igbaria 
321e1df1578SHamdan Igbaria void mlx5dr_cmd_forward_tbl_destroy(struct mlx5dr_cmd_forward_tbl *tbl);
322e1df1578SHamdan Igbaria 
323e1df1578SHamdan Igbaria struct mlx5dr_devx_obj *
32425cb2d2aSHamdan Igbaria mlx5dr_cmd_packet_reformat_create(struct ibv_context *ctx,
32525cb2d2aSHamdan Igbaria 				  struct mlx5dr_cmd_packet_reformat_create_attr *attr);
32625cb2d2aSHamdan Igbaria 
32725cb2d2aSHamdan Igbaria struct mlx5dr_devx_obj *
3282b2ce5ddSHamdan Igbaria mlx5dr_cmd_set_fte(struct ibv_context *ctx,
3292b2ce5ddSHamdan Igbaria 		   uint32_t table_type,
3302b2ce5ddSHamdan Igbaria 		   uint32_t table_id,
3312b2ce5ddSHamdan Igbaria 		   uint32_t group_id,
3322b2ce5ddSHamdan Igbaria 		   struct mlx5dr_cmd_set_fte_attr *fte_attr);
3332b2ce5ddSHamdan Igbaria 
3342b2ce5ddSHamdan Igbaria struct mlx5dr_cmd_forward_tbl *
3352b2ce5ddSHamdan Igbaria mlx5dr_cmd_forward_tbl_create(struct ibv_context *ctx,
3362b2ce5ddSHamdan Igbaria 			      struct mlx5dr_cmd_ft_create_attr *ft_attr,
3372b2ce5ddSHamdan Igbaria 			      struct mlx5dr_cmd_set_fte_attr *fte_attr);
3382b2ce5ddSHamdan Igbaria 
3392b2ce5ddSHamdan Igbaria void mlx5dr_cmd_forward_tbl_destroy(struct mlx5dr_cmd_forward_tbl *tbl);
3402b2ce5ddSHamdan Igbaria 
3412b2ce5ddSHamdan Igbaria struct mlx5dr_devx_obj *
342ed695274SYevgeny Kliteynik mlx5dr_cmd_alias_obj_create(struct ibv_context *ctx,
343ed695274SYevgeny Kliteynik 			    struct mlx5dr_cmd_alias_obj_create_attr *alias_attr);
344ed695274SYevgeny Kliteynik 
345365cdf5fSErez Shitrit int mlx5dr_cmd_sq_modify_rdy(struct mlx5dr_devx_obj *devx_obj);
346365cdf5fSErez Shitrit 
347365cdf5fSErez Shitrit int mlx5dr_cmd_query_ib_port(struct ibv_context *ctx,
348365cdf5fSErez Shitrit 			     struct mlx5dr_cmd_query_vport_caps *vport_caps,
349365cdf5fSErez Shitrit 			     uint32_t port_num);
350365cdf5fSErez Shitrit int mlx5dr_cmd_query_caps(struct ibv_context *ctx,
351365cdf5fSErez Shitrit 			  struct mlx5dr_cmd_query_caps *caps);
352365cdf5fSErez Shitrit 
353365cdf5fSErez Shitrit void mlx5dr_cmd_set_attr_connect_miss_tbl(struct mlx5dr_context *ctx,
354365cdf5fSErez Shitrit 					  uint32_t fw_ft_type,
355365cdf5fSErez Shitrit 					  enum mlx5dr_table_type type,
356365cdf5fSErez Shitrit 					  struct mlx5dr_cmd_ft_modify_attr *ft_attr);
357720439d8SYevgeny Kliteynik 
358720439d8SYevgeny Kliteynik int mlx5dr_cmd_allow_other_vhca_access(struct ibv_context *ctx,
359720439d8SYevgeny Kliteynik 				       struct mlx5dr_cmd_allow_other_vhca_access_attr *attr);
360365cdf5fSErez Shitrit #endif /* MLX5DR_CMD_H_ */
361