]> git.droids-corp.org - dpdk.git/commitdiff
common/mlx5: add DevX API to move queues to reset state
authorYajun Wu <yajunw@nvidia.com>
Sat, 18 Jun 2022 09:02:46 +0000 (12:02 +0300)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 21 Jun 2022 09:17:41 +0000 (11:17 +0200)
Support set QP to RESET state.

Signed-off-by: Yajun Wu <yajunw@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/common/mlx5/mlx5_devx_cmds.c
drivers/common/mlx5/mlx5_prm.h

index c6bdbc12bb7c5706e221fedd1f4dc6fac65f768e..1d6d6578d6c3b078a9fa6d8699cfd86ac3319668 100644 (file)
@@ -2264,11 +2264,13 @@ mlx5_devx_cmd_modify_qp_state(struct mlx5_devx_obj *qp, uint32_t qp_st_mod_op,
                uint32_t rst2init[MLX5_ST_SZ_DW(rst2init_qp_in)];
                uint32_t init2rtr[MLX5_ST_SZ_DW(init2rtr_qp_in)];
                uint32_t rtr2rts[MLX5_ST_SZ_DW(rtr2rts_qp_in)];
+               uint32_t qp2rst[MLX5_ST_SZ_DW(2rst_qp_in)];
        } in;
        union {
                uint32_t rst2init[MLX5_ST_SZ_DW(rst2init_qp_out)];
                uint32_t init2rtr[MLX5_ST_SZ_DW(init2rtr_qp_out)];
                uint32_t rtr2rts[MLX5_ST_SZ_DW(rtr2rts_qp_out)];
+               uint32_t qp2rst[MLX5_ST_SZ_DW(2rst_qp_out)];
        } out;
        void *qpc;
        int ret;
@@ -2311,6 +2313,11 @@ mlx5_devx_cmd_modify_qp_state(struct mlx5_devx_obj *qp, uint32_t qp_st_mod_op,
                inlen = sizeof(in.rtr2rts);
                outlen = sizeof(out.rtr2rts);
                break;
+       case MLX5_CMD_OP_QP_2RST:
+               MLX5_SET(2rst_qp_in, &in, qpn, qp->id);
+               inlen = sizeof(in.qp2rst);
+               outlen = sizeof(out.qp2rst);
+               break;
        default:
                DRV_LOG(ERR, "Invalid or unsupported QP modify op %u.",
                        qp_st_mod_op);
index 654e5f44eefdbd2c4cb4303ee04e850b005c8b72..ed7d515af3cea4794b1af3950e702263cb8c74b4 100644 (file)
@@ -3657,6 +3657,23 @@ struct mlx5_ifc_init2init_qp_in_bits {
        u8 reserved_at_800[0x80];
 };
 
+struct mlx5_ifc_2rst_qp_out_bits {
+       u8 status[0x8];
+       u8 reserved_at_8[0x18];
+       u8 syndrome[0x20];
+       u8 reserved_at_40[0x40];
+};
+
+struct mlx5_ifc_2rst_qp_in_bits {
+       u8 opcode[0x10];
+       u8 uid[0x10];
+       u8 vhca_tunnel_id[0x10];
+       u8 op_mod[0x10];
+       u8 reserved_at_80[0x8];
+       u8 qpn[0x18];
+       u8 reserved_at_a0[0x20];
+};
+
 struct mlx5_ifc_dealloc_pd_out_bits {
        u8 status[0x8];
        u8 reserved_0[0x18];