common/mlx5: fix doorbell mapping configuration
[dpdk.git] / drivers / regex / mlx5 / mlx5_regex_devx.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2020 Mellanox Technologies, Ltd
3  */
4
5 #include <rte_errno.h>
6 #include <rte_log.h>
7
8 #include <mlx5_glue.h>
9 #include <mlx5_devx_cmds.h>
10 #include <mlx5_prm.h>
11
12 #include "mlx5_regex.h"
13 #include "mlx5_regex_utils.h"
14
15 int
16 mlx5_devx_regex_rules_program(void *ctx, uint8_t engine, uint32_t rof_mkey,
17                                 uint32_t rof_size, uint64_t rof_mkey_va)
18 {
19         uint32_t out[MLX5_ST_SZ_DW(set_regexp_params_out)] = {0};
20         uint32_t in[MLX5_ST_SZ_DW(set_regexp_params_in)] = {0};
21         int ret;
22
23         MLX5_SET(set_regexp_params_in, in, opcode, MLX5_CMD_SET_REGEX_PARAMS);
24         MLX5_SET(set_regexp_params_in, in, engine_id, engine);
25         MLX5_SET(set_regexp_params_in, in, regexp_params.rof_mkey, rof_mkey);
26         MLX5_SET(set_regexp_params_in, in, regexp_params.rof_size, rof_size);
27         MLX5_SET64(set_regexp_params_in, in, regexp_params.rof_mkey_va,
28                    rof_mkey_va);
29         MLX5_SET(set_regexp_params_in, in, field_select.rof_mkey, 1);
30         ret = mlx5_glue->devx_general_cmd(ctx, in, sizeof(in), out,
31                                           sizeof(out));
32         if (ret) {
33                 DRV_LOG(ERR, "Rules program failed %d", ret);
34                 rte_errno = errno;
35                 return -errno;
36         }
37         return 0;
38 }