History

net/mlx5: Provide simplified command interfaces

Many mlx5_cmd_exec() callers are not interested in the output from that command or have standard in/out structures. Those callers simply allocate those structure on the stack and use sizeof() to provide in/out arguments. In this naive approach provide simplified versions of mlx5_cmd_exec().

Leon Romanovsky committed 6 years ago

Commit bb7fc861 parent 8f3d9f31 file · +13 −0Browse files

Unified · Split

include/linux/mlx5/driver.h+13−0
@@ -903,6 +903,19 @@ int mlx5_cmd_exec_cb(struct mlx5_async_ctx *ctx, void *in, int in_size, · 902 unmodified lines
903 903
904int mlx5_cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,904int mlx5_cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,
905 int out_size);905 int out_size);
906
907#define mlx5_cmd_exec_inout(dev, ifc_cmd, in, out) \
908 ({ \
909 mlx5_cmd_exec(dev, in, MLX5_ST_SZ_BYTES(ifc_cmd##_in), out, \
910 MLX5_ST_SZ_BYTES(ifc_cmd##_out)); \
911 })
912
913#define mlx5_cmd_exec_in(dev, ifc_cmd, in) \
914 ({ \
915 u32 _out[MLX5_ST_SZ_DW(ifc_cmd##_out)] = {}; \
916 mlx5_cmd_exec_inout(dev, ifc_cmd, in, _out); \
917 })
918
906int mlx5_cmd_exec_polling(struct mlx5_core_dev *dev, void *in, int in_size,919int mlx5_cmd_exec_polling(struct mlx5_core_dev *dev, void *in, int in_size,
907 void *out, int out_size);920 void *out, int out_size);
908void mlx5_cmd_mbox_status(void *out, u8 *status, u32 *syndrome);921void mlx5_cmd_mbox_status(void *out, u8 *status, u32 *syndrome);