int mlx5_cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,
                  int out_size);
+
+#define mlx5_cmd_exec_inout(dev, ifc_cmd, in, out)                             \
+       ({                                                                     \
+               mlx5_cmd_exec(dev, in, MLX5_ST_SZ_BYTES(ifc_cmd##_in), out,    \
+                             MLX5_ST_SZ_BYTES(ifc_cmd##_out));                \
+       })
+
+#define mlx5_cmd_exec_in(dev, ifc_cmd, in)                                     \
+       ({                                                                     \
+               u32 _out[MLX5_ST_SZ_DW(ifc_cmd##_out)] = {};                   \
+               mlx5_cmd_exec_inout(dev, ifc_cmd, in, _out);                   \
+       })
+
 int mlx5_cmd_exec_polling(struct mlx5_core_dev *dev, void *in, int in_size,
                          void *out, int out_size);
 void mlx5_cmd_mbox_status(void *out, u8 *status, u32 *syndrome);