| .. | .. |
|---|
| 31 | 31 | */ |
|---|
| 32 | 32 | |
|---|
| 33 | 33 | #include <linux/etherdevice.h> |
|---|
| 34 | | -#include <linux/mlx5/cmd.h> |
|---|
| 35 | 34 | #include <linux/mlx5/driver.h> |
|---|
| 36 | 35 | #include <linux/mlx5/device.h> |
|---|
| 37 | 36 | |
|---|
| .. | .. |
|---|
| 143 | 142 | int mlx5_fpga_create_qp(struct mlx5_core_dev *dev, void *fpga_qpc, |
|---|
| 144 | 143 | u32 *fpga_qpn) |
|---|
| 145 | 144 | { |
|---|
| 146 | | - u32 in[MLX5_ST_SZ_DW(fpga_create_qp_in)] = {0}; |
|---|
| 147 | | - u32 out[MLX5_ST_SZ_DW(fpga_create_qp_out)]; |
|---|
| 145 | + u32 out[MLX5_ST_SZ_DW(fpga_create_qp_out)] = {}; |
|---|
| 146 | + u32 in[MLX5_ST_SZ_DW(fpga_create_qp_in)] = {}; |
|---|
| 148 | 147 | int ret; |
|---|
| 149 | 148 | |
|---|
| 150 | 149 | MLX5_SET(fpga_create_qp_in, in, opcode, MLX5_CMD_OP_FPGA_CREATE_QP); |
|---|
| 151 | 150 | memcpy(MLX5_ADDR_OF(fpga_create_qp_in, in, fpga_qpc), fpga_qpc, |
|---|
| 152 | 151 | MLX5_FLD_SZ_BYTES(fpga_create_qp_in, fpga_qpc)); |
|---|
| 153 | 152 | |
|---|
| 154 | | - ret = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); |
|---|
| 153 | + ret = mlx5_cmd_exec_inout(dev, fpga_create_qp, in, out); |
|---|
| 155 | 154 | if (ret) |
|---|
| 156 | 155 | return ret; |
|---|
| 157 | 156 | |
|---|
| .. | .. |
|---|
| 165 | 164 | enum mlx5_fpga_qpc_field_select fields, |
|---|
| 166 | 165 | void *fpga_qpc) |
|---|
| 167 | 166 | { |
|---|
| 168 | | - u32 in[MLX5_ST_SZ_DW(fpga_modify_qp_in)] = {0}; |
|---|
| 169 | | - u32 out[MLX5_ST_SZ_DW(fpga_modify_qp_out)]; |
|---|
| 167 | + u32 in[MLX5_ST_SZ_DW(fpga_modify_qp_in)] = {}; |
|---|
| 170 | 168 | |
|---|
| 171 | 169 | MLX5_SET(fpga_modify_qp_in, in, opcode, MLX5_CMD_OP_FPGA_MODIFY_QP); |
|---|
| 172 | 170 | MLX5_SET(fpga_modify_qp_in, in, field_select, fields); |
|---|
| .. | .. |
|---|
| 174 | 172 | memcpy(MLX5_ADDR_OF(fpga_modify_qp_in, in, fpga_qpc), fpga_qpc, |
|---|
| 175 | 173 | MLX5_FLD_SZ_BYTES(fpga_modify_qp_in, fpga_qpc)); |
|---|
| 176 | 174 | |
|---|
| 177 | | - return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); |
|---|
| 175 | + return mlx5_cmd_exec_in(dev, fpga_modify_qp, in); |
|---|
| 178 | 176 | } |
|---|
| 179 | 177 | |
|---|
| 180 | 178 | int mlx5_fpga_query_qp(struct mlx5_core_dev *dev, |
|---|
| 181 | 179 | u32 fpga_qpn, void *fpga_qpc) |
|---|
| 182 | 180 | { |
|---|
| 183 | | - u32 in[MLX5_ST_SZ_DW(fpga_query_qp_in)] = {0}; |
|---|
| 184 | | - u32 out[MLX5_ST_SZ_DW(fpga_query_qp_out)]; |
|---|
| 181 | + u32 out[MLX5_ST_SZ_DW(fpga_query_qp_out)] = {}; |
|---|
| 182 | + u32 in[MLX5_ST_SZ_DW(fpga_query_qp_in)] = {}; |
|---|
| 185 | 183 | int ret; |
|---|
| 186 | 184 | |
|---|
| 187 | 185 | MLX5_SET(fpga_query_qp_in, in, opcode, MLX5_CMD_OP_FPGA_QUERY_QP); |
|---|
| 188 | 186 | MLX5_SET(fpga_query_qp_in, in, fpga_qpn, fpga_qpn); |
|---|
| 189 | 187 | |
|---|
| 190 | | - ret = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); |
|---|
| 188 | + ret = mlx5_cmd_exec_inout(dev, fpga_query_qp, in, out); |
|---|
| 191 | 189 | if (ret) |
|---|
| 192 | 190 | return ret; |
|---|
| 193 | 191 | |
|---|
| .. | .. |
|---|
| 198 | 196 | |
|---|
| 199 | 197 | int mlx5_fpga_destroy_qp(struct mlx5_core_dev *dev, u32 fpga_qpn) |
|---|
| 200 | 198 | { |
|---|
| 201 | | - u32 in[MLX5_ST_SZ_DW(fpga_destroy_qp_in)] = {0}; |
|---|
| 202 | | - u32 out[MLX5_ST_SZ_DW(fpga_destroy_qp_out)]; |
|---|
| 199 | + u32 in[MLX5_ST_SZ_DW(fpga_destroy_qp_in)] = {}; |
|---|
| 203 | 200 | |
|---|
| 204 | 201 | MLX5_SET(fpga_destroy_qp_in, in, opcode, MLX5_CMD_OP_FPGA_DESTROY_QP); |
|---|
| 205 | 202 | MLX5_SET(fpga_destroy_qp_in, in, fpga_qpn, fpga_qpn); |
|---|
| 206 | 203 | |
|---|
| 207 | | - return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); |
|---|
| 204 | + return mlx5_cmd_exec_in(dev, fpga_destroy_qp, in); |
|---|
| 208 | 205 | } |
|---|
| 209 | 206 | |
|---|
| 210 | 207 | int mlx5_fpga_query_qp_counters(struct mlx5_core_dev *dev, u32 fpga_qpn, |
|---|
| 211 | 208 | bool clear, struct mlx5_fpga_qp_counters *data) |
|---|
| 212 | 209 | { |
|---|
| 213 | | - u32 in[MLX5_ST_SZ_DW(fpga_query_qp_counters_in)] = {0}; |
|---|
| 214 | | - u32 out[MLX5_ST_SZ_DW(fpga_query_qp_counters_out)]; |
|---|
| 210 | + u32 out[MLX5_ST_SZ_DW(fpga_query_qp_counters_out)] = {}; |
|---|
| 211 | + u32 in[MLX5_ST_SZ_DW(fpga_query_qp_counters_in)] = {}; |
|---|
| 215 | 212 | int ret; |
|---|
| 216 | 213 | |
|---|
| 217 | 214 | MLX5_SET(fpga_query_qp_counters_in, in, opcode, |
|---|
| .. | .. |
|---|
| 219 | 216 | MLX5_SET(fpga_query_qp_counters_in, in, clear, clear); |
|---|
| 220 | 217 | MLX5_SET(fpga_query_qp_counters_in, in, fpga_qpn, fpga_qpn); |
|---|
| 221 | 218 | |
|---|
| 222 | | - ret = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); |
|---|
| 219 | + ret = mlx5_cmd_exec_inout(dev, fpga_query_qp_counters, in, out); |
|---|
| 223 | 220 | if (ret) |
|---|
| 224 | 221 | return ret; |
|---|
| 225 | 222 | |
|---|