xref: /dpdk/drivers/regex/mlx5/mlx5_regex_devx.c (revision 7281f194fb2dc09b5bbb20f4f771a841457672da)
19428310aSOri Kam /* SPDX-License-Identifier: BSD-3-Clause
29428310aSOri Kam  * Copyright 2020 Mellanox Technologies, Ltd
39428310aSOri Kam  */
49428310aSOri Kam 
59428310aSOri Kam #include <rte_errno.h>
69428310aSOri Kam #include <rte_log.h>
79428310aSOri Kam 
89428310aSOri Kam #include <mlx5_glue.h>
99428310aSOri Kam #include <mlx5_devx_cmds.h>
109428310aSOri Kam #include <mlx5_prm.h>
119428310aSOri Kam 
129428310aSOri Kam #include "mlx5_regex.h"
139428310aSOri Kam #include "mlx5_regex_utils.h"
149428310aSOri Kam 
159428310aSOri Kam int
mlx5_devx_regex_rules_program(void * ctx,uint8_t engine,uint32_t rof_mkey,uint32_t rof_size,uint64_t rof_mkey_va)16*1663c140SAdy Agbarih mlx5_devx_regex_rules_program(void *ctx, uint8_t engine, uint32_t rof_mkey,
17*1663c140SAdy Agbarih 				uint32_t rof_size, uint64_t rof_mkey_va)
18b34d8163SFrancis Kelly {
19b34d8163SFrancis Kelly 	uint32_t out[MLX5_ST_SZ_DW(set_regexp_params_out)] = {0};
20b34d8163SFrancis Kelly 	uint32_t in[MLX5_ST_SZ_DW(set_regexp_params_in)] = {0};
21b34d8163SFrancis Kelly 	int ret;
22b34d8163SFrancis Kelly 
23b34d8163SFrancis Kelly 	MLX5_SET(set_regexp_params_in, in, opcode, MLX5_CMD_SET_REGEX_PARAMS);
24b34d8163SFrancis Kelly 	MLX5_SET(set_regexp_params_in, in, engine_id, engine);
25*1663c140SAdy Agbarih 	MLX5_SET(set_regexp_params_in, in, regexp_params.rof_mkey, rof_mkey);
26*1663c140SAdy Agbarih 	MLX5_SET(set_regexp_params_in, in, regexp_params.rof_size, rof_size);
27*1663c140SAdy Agbarih 	MLX5_SET64(set_regexp_params_in, in, regexp_params.rof_mkey_va,
28*1663c140SAdy Agbarih 		   rof_mkey_va);
29*1663c140SAdy Agbarih 	MLX5_SET(set_regexp_params_in, in, field_select.rof_mkey, 1);
30b34d8163SFrancis Kelly 	ret = mlx5_glue->devx_general_cmd(ctx, in, sizeof(in), out,
31b34d8163SFrancis Kelly 					  sizeof(out));
32b34d8163SFrancis Kelly 	if (ret) {
33*1663c140SAdy Agbarih 		DRV_LOG(ERR, "Rules program failed %d", ret);
34b34d8163SFrancis Kelly 		rte_errno = errno;
35b34d8163SFrancis Kelly 		return -errno;
36b34d8163SFrancis Kelly 	}
37b34d8163SFrancis Kelly 	return 0;
38b34d8163SFrancis Kelly }
39