Message ID | 20200420114136.264924-3-leon@kernel.org |
---|---|
State | Awaiting Upstream |
Delegated to: | David Miller |
Headers | show |
Series | Mass conversion to light mlx5 command interface | expand |
On Mon, Apr 20, 2020 at 02:41:14PM +0300, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@mellanox.com> > > Do mass update of cq.c to reuse newly introduced > mlx5_cmd_exec_in*() interfaces. > > Reviewed-by: Moshe Shemesh <moshe@mellanox.com> > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/cq.c | 24 +++++++------------ > .../net/ethernet/mellanox/mlx5/core/debugfs.c | 2 +- > .../ethernet/mellanox/mlx5/core/en/health.c | 2 +- > include/linux/mlx5/cq.h | 2 +- > 4 files changed, 12 insertions(+), 18 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cq.c b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > index 4477a590b308..1a6f1f14da97 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/cq.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > @@ -90,8 +90,7 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > u32 *in, int inlen, u32 *out, int outlen) > { > int eqn = MLX5_GET(cqc, MLX5_ADDR_OF(create_cq_in, in, cq_context), c_eqn); > - u32 dout[MLX5_ST_SZ_DW(destroy_cq_out)]; > - u32 din[MLX5_ST_SZ_DW(destroy_cq_in)]; > + u32 din[MLX5_ST_SZ_DW(destroy_cq_in)] = {}; > struct mlx5_eq_comp *eq; > int err; > > @@ -141,20 +140,17 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > err_cq_add: > mlx5_eq_del_cq(&eq->core, cq); > err_cmd: > - memset(din, 0, sizeof(din)); > - memset(dout, 0, sizeof(dout)); > MLX5_SET(destroy_cq_in, din, opcode, MLX5_CMD_OP_DESTROY_CQ); > MLX5_SET(destroy_cq_in, din, cqn, cq->cqn); > MLX5_SET(destroy_cq_in, din, uid, cq->uid); > - mlx5_cmd_exec(dev, din, sizeof(din), dout, sizeof(dout)); > + mlx5_cmd_exec_in(dev, destroy_cq, din); > return err; > } > EXPORT_SYMBOL(mlx5_core_create_cq); > > int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) > { > - u32 out[MLX5_ST_SZ_DW(destroy_cq_out)] = {0}; > - u32 in[MLX5_ST_SZ_DW(destroy_cq_in)] = {0}; > + u32 in[MLX5_ST_SZ_DW(destroy_cq_in)] = {}; > int err; > > mlx5_eq_del_cq(mlx5_get_async_eq(dev), cq); > @@ -163,7 +159,7 @@ int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) > MLX5_SET(destroy_cq_in, in, opcode, MLX5_CMD_OP_DESTROY_CQ); > MLX5_SET(destroy_cq_in, in, cqn, cq->cqn); > MLX5_SET(destroy_cq_in, in, uid, cq->uid); > - err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); > + err = mlx5_cmd_exec_in(dev, destroy_cq, in); > if (err) > return err; > > @@ -178,24 +174,22 @@ int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) > EXPORT_SYMBOL(mlx5_core_destroy_cq); > > int mlx5_core_query_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > - u32 *out, int outlen) > + u32 *out) > { > - u32 in[MLX5_ST_SZ_DW(query_cq_in)] = {0}; > + u32 in[MLX5_ST_SZ_DW(query_cq_in)] = {}; > > MLX5_SET(query_cq_in, in, opcode, MLX5_CMD_OP_QUERY_CQ); > MLX5_SET(query_cq_in, in, cqn, cq->cqn); > - return mlx5_cmd_exec(dev, in, sizeof(in), out, outlen); > + return mlx5_cmd_exec_inout(dev, query_cq, in, out); > } > EXPORT_SYMBOL(mlx5_core_query_cq); > > int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > u32 *in, int inlen) > { > - u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {0}; > - > MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); > MLX5_SET(modify_cq_in, in, uid, cq->uid); > - return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); > + return mlx5_cmd_exec_in(dev, modify_cq, in); > } > EXPORT_SYMBOL(mlx5_core_modify_cq); > This hunk needs this fixup: diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cq.c b/drivers/net/ethernet/mellanox/mlx5/core/cq.c index 1a6f1f14da97..8379b24cb838 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cq.c @@ -187,9 +187,11 @@ EXPORT_SYMBOL(mlx5_core_query_cq); int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, u32 *in, int inlen) { + u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {}; + MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); MLX5_SET(modify_cq_in, in, uid, cq->uid); - return mlx5_cmd_exec_in(dev, modify_cq, in); + return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); } EXPORT_SYMBOL(mlx5_core_modify_cq); Thanks
On Wed, Apr 22, 2020 at 07:49:48PM +0300, Leon Romanovsky wrote: > > int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > > u32 *in, int inlen) > > { > > - u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {0}; > > - > > MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); > > MLX5_SET(modify_cq_in, in, uid, cq->uid); > > - return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); > > + return mlx5_cmd_exec_in(dev, modify_cq, in); > > } > > EXPORT_SYMBOL(mlx5_core_modify_cq); > > > > This hunk needs this fixup: > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cq.c b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > index 1a6f1f14da97..8379b24cb838 100644 > +++ b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > @@ -187,9 +187,11 @@ EXPORT_SYMBOL(mlx5_core_query_cq); > int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > u32 *in, int inlen) > { > + u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {}; > + > MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); > MLX5_SET(modify_cq_in, in, uid, cq->uid); > - return mlx5_cmd_exec_in(dev, modify_cq, in); > + return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); > } > EXPORT_SYMBOL(mlx5_core_modify_cq); Why doesn't this one work with the helper? Jason
On Wed, Apr 22, 2020 at 03:32:14PM -0300, Jason Gunthorpe wrote: > On Wed, Apr 22, 2020 at 07:49:48PM +0300, Leon Romanovsky wrote: > > > int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > > > u32 *in, int inlen) > > > { > > > - u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {0}; > > > - > > > MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); > > > MLX5_SET(modify_cq_in, in, uid, cq->uid); > > > - return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); > > > + return mlx5_cmd_exec_in(dev, modify_cq, in); > > > } > > > EXPORT_SYMBOL(mlx5_core_modify_cq); > > > > > > > This hunk needs this fixup: > > > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cq.c b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > > index 1a6f1f14da97..8379b24cb838 100644 > > +++ b/drivers/net/ethernet/mellanox/mlx5/core/cq.c > > @@ -187,9 +187,11 @@ EXPORT_SYMBOL(mlx5_core_query_cq); > > int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, > > u32 *in, int inlen) > > { > > + u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {}; > > + > > MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); > > MLX5_SET(modify_cq_in, in, uid, cq->uid); > > - return mlx5_cmd_exec_in(dev, modify_cq, in); > > + return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); > > } > > EXPORT_SYMBOL(mlx5_core_modify_cq); > > Why doesn't this one work with the helper? In the mlx5_ib_resize_cq() function inlen is equal to 1290 inlen = MLX5_ST_SZ_BYTES(modify_cq_in) + 1291 MLX5_FLD_SZ_BYTES(modify_cq_in, pas[0]) * npas; and not to MLX5_ST_SZ_BYTES(modify_cq_in) like helper assumes. Thanks > > Jason
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cq.c b/drivers/net/ethernet/mellanox/mlx5/core/cq.c index 4477a590b308..1a6f1f14da97 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cq.c @@ -90,8 +90,7 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, u32 *in, int inlen, u32 *out, int outlen) { int eqn = MLX5_GET(cqc, MLX5_ADDR_OF(create_cq_in, in, cq_context), c_eqn); - u32 dout[MLX5_ST_SZ_DW(destroy_cq_out)]; - u32 din[MLX5_ST_SZ_DW(destroy_cq_in)]; + u32 din[MLX5_ST_SZ_DW(destroy_cq_in)] = {}; struct mlx5_eq_comp *eq; int err; @@ -141,20 +140,17 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, err_cq_add: mlx5_eq_del_cq(&eq->core, cq); err_cmd: - memset(din, 0, sizeof(din)); - memset(dout, 0, sizeof(dout)); MLX5_SET(destroy_cq_in, din, opcode, MLX5_CMD_OP_DESTROY_CQ); MLX5_SET(destroy_cq_in, din, cqn, cq->cqn); MLX5_SET(destroy_cq_in, din, uid, cq->uid); - mlx5_cmd_exec(dev, din, sizeof(din), dout, sizeof(dout)); + mlx5_cmd_exec_in(dev, destroy_cq, din); return err; } EXPORT_SYMBOL(mlx5_core_create_cq); int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) { - u32 out[MLX5_ST_SZ_DW(destroy_cq_out)] = {0}; - u32 in[MLX5_ST_SZ_DW(destroy_cq_in)] = {0}; + u32 in[MLX5_ST_SZ_DW(destroy_cq_in)] = {}; int err; mlx5_eq_del_cq(mlx5_get_async_eq(dev), cq); @@ -163,7 +159,7 @@ int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) MLX5_SET(destroy_cq_in, in, opcode, MLX5_CMD_OP_DESTROY_CQ); MLX5_SET(destroy_cq_in, in, cqn, cq->cqn); MLX5_SET(destroy_cq_in, in, uid, cq->uid); - err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); + err = mlx5_cmd_exec_in(dev, destroy_cq, in); if (err) return err; @@ -178,24 +174,22 @@ int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq) EXPORT_SYMBOL(mlx5_core_destroy_cq); int mlx5_core_query_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, - u32 *out, int outlen) + u32 *out) { - u32 in[MLX5_ST_SZ_DW(query_cq_in)] = {0}; + u32 in[MLX5_ST_SZ_DW(query_cq_in)] = {}; MLX5_SET(query_cq_in, in, opcode, MLX5_CMD_OP_QUERY_CQ); MLX5_SET(query_cq_in, in, cqn, cq->cqn); - return mlx5_cmd_exec(dev, in, sizeof(in), out, outlen); + return mlx5_cmd_exec_inout(dev, query_cq, in, out); } EXPORT_SYMBOL(mlx5_core_query_cq); int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, u32 *in, int inlen) { - u32 out[MLX5_ST_SZ_DW(modify_cq_out)] = {0}; - MLX5_SET(modify_cq_in, in, opcode, MLX5_CMD_OP_MODIFY_CQ); MLX5_SET(modify_cq_in, in, uid, cq->uid); - return mlx5_cmd_exec(dev, in, inlen, out, sizeof(out)); + return mlx5_cmd_exec_in(dev, modify_cq, in); } EXPORT_SYMBOL(mlx5_core_modify_cq); @@ -204,7 +198,7 @@ int mlx5_core_modify_cq_moderation(struct mlx5_core_dev *dev, u16 cq_period, u16 cq_max_count) { - u32 in[MLX5_ST_SZ_DW(modify_cq_in)] = {0}; + u32 in[MLX5_ST_SZ_DW(modify_cq_in)] = {}; void *cqc; MLX5_SET(modify_cq_in, in, cqn, cq->cqn); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c b/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c index 65fef5a86644..c05e6a2c9126 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/debugfs.c @@ -333,7 +333,7 @@ static u64 cq_read_field(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, if (!out) return param; - err = mlx5_core_query_cq(dev, cq, out, outlen); + err = mlx5_core_query_cq(dev, cq, out); if (err) { mlx5_core_warn(dev, "failed to query cq\n"); goto out; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c index 3a199a03d929..7283443868f3 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/health.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/health.c @@ -43,7 +43,7 @@ int mlx5e_reporter_cq_diagnose(struct mlx5e_cq *cq, struct devlink_fmsg *fmsg) void *cqc; int err; - err = mlx5_core_query_cq(priv->mdev, &cq->mcq, out, sizeof(out)); + err = mlx5_core_query_cq(priv->mdev, &cq->mcq, out); if (err) return err; diff --git a/include/linux/mlx5/cq.h b/include/linux/mlx5/cq.h index 40748fc1b11b..b5a9399e07ee 100644 --- a/include/linux/mlx5/cq.h +++ b/include/linux/mlx5/cq.h @@ -188,7 +188,7 @@ int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, u32 *in, int inlen, u32 *out, int outlen); int mlx5_core_destroy_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq); int mlx5_core_query_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, - u32 *out, int outlen); + u32 *out); int mlx5_core_modify_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq, u32 *in, int inlen); int mlx5_core_modify_cq_moderation(struct mlx5_core_dev *dev,