Commit c14003f0 authored by Yishai Hadas's avatar Yishai Hadas Committed by Jason Gunthorpe

IB/mlx5: Set uid as part of SQ commands

Set uid as part of SQ commands so that the firmware can manage the
SQ object in a secured way.

The uid for the destroy command is set by mlx5_core.

This will enable using an SQ that was created by verbs application
to be used by the DEVX flow in case the uid is equal.
Signed-off-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 34d57585
...@@ -1115,6 +1115,7 @@ static int create_raw_packet_qp_sq(struct mlx5_ib_dev *dev, ...@@ -1115,6 +1115,7 @@ static int create_raw_packet_qp_sq(struct mlx5_ib_dev *dev,
goto err_umem; goto err_umem;
} }
MLX5_SET(create_sq_in, in, uid, to_mpd(pd)->uid);
sqc = MLX5_ADDR_OF(create_sq_in, in, ctx); sqc = MLX5_ADDR_OF(create_sq_in, in, ctx);
MLX5_SET(sqc, sqc, flush_in_error_en, 1); MLX5_SET(sqc, sqc, flush_in_error_en, 1);
if (MLX5_CAP_ETH(dev->mdev, multi_pkt_send_wqe)) if (MLX5_CAP_ETH(dev->mdev, multi_pkt_send_wqe))
...@@ -2827,10 +2828,9 @@ static int modify_raw_packet_qp_rq( ...@@ -2827,10 +2828,9 @@ static int modify_raw_packet_qp_rq(
return err; return err;
} }
static int modify_raw_packet_qp_sq(struct mlx5_core_dev *dev, static int modify_raw_packet_qp_sq(
struct mlx5_ib_sq *sq, struct mlx5_core_dev *dev, struct mlx5_ib_sq *sq, int new_state,
int new_state, const struct mlx5_modify_raw_qp_param *raw_qp_param, struct ib_pd *pd)
const struct mlx5_modify_raw_qp_param *raw_qp_param)
{ {
struct mlx5_ib_qp *ibqp = sq->base.container_mibqp; struct mlx5_ib_qp *ibqp = sq->base.container_mibqp;
struct mlx5_rate_limit old_rl = ibqp->rl; struct mlx5_rate_limit old_rl = ibqp->rl;
...@@ -2847,6 +2847,7 @@ static int modify_raw_packet_qp_sq(struct mlx5_core_dev *dev, ...@@ -2847,6 +2847,7 @@ static int modify_raw_packet_qp_sq(struct mlx5_core_dev *dev,
if (!in) if (!in)
return -ENOMEM; return -ENOMEM;
MLX5_SET(modify_sq_in, in, uid, to_mpd(pd)->uid);
MLX5_SET(modify_sq_in, in, sq_state, sq->state); MLX5_SET(modify_sq_in, in, sq_state, sq->state);
sqc = MLX5_ADDR_OF(modify_sq_in, in, ctx); sqc = MLX5_ADDR_OF(modify_sq_in, in, ctx);
...@@ -2963,7 +2964,8 @@ static int modify_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp, ...@@ -2963,7 +2964,8 @@ static int modify_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
return err; return err;
} }
return modify_raw_packet_qp_sq(dev->mdev, sq, sq_state, raw_qp_param); return modify_raw_packet_qp_sq(dev->mdev, sq, sq_state,
raw_qp_param, qp->ibqp.pd);
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment