RDMA/mlx5: Add missed RST2INIT and INIT2INIT steps during ECE handshake
Missed steps during ECE handshake left userspace application with less
options for the ECE handshake. Pass ECE options in the additional
transitions.
Fixes: 50aec2c313
("RDMA/mlx5: Return ECE data after modify QP")
Link: https://lore.kernel.org/r/20200616104536.2426384-1-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Este cometimento está contido em:

cometido por
Jason Gunthorpe

ascendente
730c891248
cometimento
ab183d460d
@@ -346,6 +346,9 @@ static int get_ece_from_mbox(void *out, u16 opcode)
|
||||
int ece = 0;
|
||||
|
||||
switch (opcode) {
|
||||
case MLX5_CMD_OP_INIT2INIT_QP:
|
||||
ece = MLX5_GET(init2init_qp_out, out, ece);
|
||||
break;
|
||||
case MLX5_CMD_OP_INIT2RTR_QP:
|
||||
ece = MLX5_GET(init2rtr_qp_out, out, ece);
|
||||
break;
|
||||
@@ -355,6 +358,9 @@ static int get_ece_from_mbox(void *out, u16 opcode)
|
||||
case MLX5_CMD_OP_RTS2RTS_QP:
|
||||
ece = MLX5_GET(rts2rts_qp_out, out, ece);
|
||||
break;
|
||||
case MLX5_CMD_OP_RST2INIT_QP:
|
||||
ece = MLX5_GET(rst2init_qp_out, out, ece);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -406,6 +412,7 @@ static int modify_qp_mbox_alloc(struct mlx5_core_dev *dev, u16 opcode, int qpn,
|
||||
return -ENOMEM;
|
||||
MOD_QP_IN_SET_QPC(rst2init_qp, mbox->in, opcode, qpn,
|
||||
opt_param_mask, qpc, uid);
|
||||
MLX5_SET(rst2init_qp_in, mbox->in, ece, ece);
|
||||
break;
|
||||
case MLX5_CMD_OP_INIT2RTR_QP:
|
||||
if (MBOX_ALLOC(mbox, init2rtr_qp))
|
||||
@@ -439,6 +446,7 @@ static int modify_qp_mbox_alloc(struct mlx5_core_dev *dev, u16 opcode, int qpn,
|
||||
return -ENOMEM;
|
||||
MOD_QP_IN_SET_QPC(init2init_qp, mbox->in, opcode, qpn,
|
||||
opt_param_mask, qpc, uid);
|
||||
MLX5_SET(init2init_qp_in, mbox->in, ece, ece);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador