mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-12 09:58:36 +00:00
Enhance the mlx5_core_create_cq() function in mlx5core.
Enhance mlx5_core_create_cq() to get the command out buffer from the callers to let them use the output. Linux commit: 38164b771947be9baf06e78ffdfb650f8f3e908e MFC after: 1 week Sponsored by: Mellanox Technologies // NVIDIA Networking
This commit is contained in:
parent
4a64b690f1
commit
ffdb195f31
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=367717
@ -155,7 +155,7 @@ static inline void mlx5_cq_arm(struct mlx5_core_cq *cq, u32 cmd,
|
||||
int mlx5_init_cq_table(struct mlx5_core_dev *dev);
|
||||
void mlx5_cleanup_cq_table(struct mlx5_core_dev *dev);
|
||||
int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
|
||||
u32 *in, int inlen);
|
||||
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);
|
||||
|
@ -119,16 +119,16 @@ void mlx5_cq_event(struct mlx5_core_dev *dev, u32 cqn, int event_type)
|
||||
}
|
||||
|
||||
int mlx5_core_create_cq(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
|
||||
u32 *in, int inlen)
|
||||
u32 *in, int inlen, u32 *out, int outlen)
|
||||
{
|
||||
struct mlx5_cq_table *table = &dev->priv.cq_table;
|
||||
u32 out[MLX5_ST_SZ_DW(create_cq_out)] = {0};
|
||||
u32 din[MLX5_ST_SZ_DW(destroy_cq_in)] = {0};
|
||||
u32 dout[MLX5_ST_SZ_DW(destroy_cq_out)] = {0};
|
||||
int err;
|
||||
|
||||
memset(out, 0, outlen);
|
||||
MLX5_SET(create_cq_in, in, opcode, MLX5_CMD_OP_CREATE_CQ);
|
||||
err = mlx5_cmd_exec(dev, in, inlen, out, sizeof(out));
|
||||
err = mlx5_cmd_exec(dev, in, inlen, out, outlen);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -1989,6 +1989,7 @@ static int
|
||||
mlx5e_enable_cq(struct mlx5e_cq *cq, struct mlx5e_cq_param *param, int eq_ix)
|
||||
{
|
||||
struct mlx5_core_cq *mcq = &cq->mcq;
|
||||
u32 out[MLX5_ST_SZ_DW(create_cq_out)];
|
||||
void *in;
|
||||
void *cqc;
|
||||
int inlen;
|
||||
@ -2017,7 +2018,7 @@ mlx5e_enable_cq(struct mlx5e_cq *cq, struct mlx5e_cq_param *param, int eq_ix)
|
||||
PAGE_SHIFT);
|
||||
MLX5_SET64(cqc, cqc, dbr_addr, cq->wq_ctrl.db.dma);
|
||||
|
||||
err = mlx5_core_create_cq(cq->priv->mdev, mcq, in, inlen);
|
||||
err = mlx5_core_create_cq(cq->priv->mdev, mcq, in, inlen, out, sizeof(out));
|
||||
|
||||
kvfree(in);
|
||||
|
||||
|
@ -905,6 +905,7 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
|
||||
int entries = attr->cqe;
|
||||
int vector = attr->comp_vector;
|
||||
struct mlx5_ib_dev *dev = to_mdev(ibdev);
|
||||
u32 out[MLX5_ST_SZ_DW(create_cq_out)];
|
||||
struct mlx5_ib_cq *cq;
|
||||
int uninitialized_var(index);
|
||||
int uninitialized_var(inlen);
|
||||
@ -969,7 +970,7 @@ struct ib_cq *mlx5_ib_create_cq(struct ib_device *ibdev,
|
||||
if (cq->create_flags & IB_CQ_FLAGS_IGNORE_OVERRUN)
|
||||
MLX5_SET(cqc, cqc, oi, 1);
|
||||
|
||||
err = mlx5_core_create_cq(dev->mdev, &cq->mcq, cqb, inlen);
|
||||
err = mlx5_core_create_cq(dev->mdev, &cq->mcq, cqb, inlen, out, sizeof(out));
|
||||
if (err)
|
||||
goto err_cqb;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user